Skills and Slash Commands for CCA-F
Custom commands and reusable skills let Claude Code carry procedures that should not live in every conversation. They are part of the configuration reasoning tested by the Claude Certified Architect – Foundations exam: deciding when a workflow should be invoked on demand, who should receive it, and how much context it should consume.
For naming, ExamSnap retains CCA-F in the established exam URL, while Anthropic’s current published guide uses CCAR-F as the official code.
This area is easy to study too mechanically because Claude Code has evolved quickly. The exam guide uses slash-command and skill terminology from its published blueprint, while the current product has increasingly unified reusable workflows around Skills. The durable idea is not the folder name alone. It is the distinction between always-loaded guidance and a capability that should appear only when a task needs it.
A release checklist, migration procedure, code-review workflow, or incident triage process may be valuable only occasionally. Putting the entire procedure into project-wide instructions makes every unrelated session pay the context cost. An on-demand command or Skill is a better fit because the workflow can remain dormant until invoked or matched.
This is the same information-architecture decision you would make in a large application: keep the always-needed core small, then load specialized behavior only when it is relevant. The benefit is not just token efficiency. It also reduces accidental cross-talk between unrelated tasks.
For exam scenarios, look for words such as optional, repeatable, parameterized, specialized, or invoked when needed. Those are clues that the workflow probably belongs in an on-demand mechanism rather than in a root instruction file.
A reusable workflow shared by a team should live with the repository so it can be versioned and reviewed with the code it supports. A personal shortcut that should follow one developer across many repositories belongs at user scope. Mixing the two creates predictable failures: teammates cannot reproduce a personal workflow, or a private preference unexpectedly becomes team policy.
This distinction also affects maintenance. A project-scoped capability can evolve in pull requests, gain owners, and be tested as part of the repository. A personal capability can change rapidly without forcing the whole team to adopt it.
When a question describes a workflow that every clone of the repository should receive, choose the shared layer. When it describes one person’s reusable helper across unrelated projects, choose the user layer.
Reusable workflows need a clear invocation contract. Parameters, argument hints, expected inputs, and predictable output make a workflow easier to use and easier to test. A command that accepts a service name and release identifier should make those inputs explicit rather than forcing Claude to guess what the user meant.
The same principle appears in prompt engineering: ambiguity at the interface becomes inconsistent behavior downstream. The difference is that a reusable Skill or command packages the interface and procedure so the team does not have to reconstruct it in every conversation.
A good workflow is narrow enough that its name and description tell Claude or the user when it applies. A vague “helper” capability that contains deployment, review, documentation, and incident logic is hard to invoke predictably and harder to secure.
Current Claude tooling treats Skills as filesystem-based packages that can contain instructions, supporting references, scripts, and other resources. The important architectural advantage is progressive disclosure: lightweight metadata can advertise the capability, while the full instructions and resources load only when the task calls for them.
That model is useful far beyond the exam. A well-designed Skill can carry a team’s review rubric, database migration workflow, or deployment procedure without forcing all of that material into the default context. Scripts can handle deterministic operations while the written instructions explain the judgment that still belongs to the model.
The failure mode is to move every document into a Skill simply because the feature exists. If information truly applies to nearly every session in a repository, an always-loaded project instruction may still be the clearer design.
A reusable workflow may call tools, write files, run commands, or trigger external actions. That makes its permission model part of the design. A descriptive instruction saying “do not delete anything” is weaker than an actual control that prevents destructive tools from being used.
The distinction becomes clearer in the site’s explanation of tool use and function calling: a model-generated action request should not automatically inherit permission to execute. Validate the action and constrain the capability at the application boundary.
Side-effecting workflows deserve extra care. If a capability deploys, commits, sends messages, or changes production state, the system should make invocation intentional and should keep high-impact permissions narrower than ordinary read-only work.
Certification guides freeze a product at a point in time. Claude Code does not. Command behavior, Skill discovery, frontmatter fields, and permission semantics can change after an exam blueprint is published. The correct study habit is to learn the guide’s intended distinction while also checking current documentation before configuring a real system.
This is especially important when a field name sounds like a security boundary. A configuration option that once appeared to “restrict” tools may now mean that certain tools are pre-approved for a turn, while a different control is used to deny access. The name alone is not enough.
On the exam, answer the architectural problem defined by the blueprint. In production, use the current product behavior. Keeping those two contexts explicit is better than pretending they have never drifted.
A useful lab is a repository-scoped code-review Skill that takes an optional component name. Keep its instructions focused, add only the references needed for that review, and test when it activates. Then create a personal workflow with a similar purpose and observe why the two scopes are not interchangeable.
Test what happens when required context is missing, when arguments are malformed, and when the workflow tries to use a tool it should not need. Those failure cases expose the quality of the interface more effectively than a happy-path demo.
The exam skill is ultimately one of classification: always-on rule or on-demand capability, project scope or user scope, flexible model judgment or deterministic control. If you can justify those choices from the scenario, you are studying the right thing.
A strong reusable workflow has a defined audience, trigger, input contract, and expected result. That sounds formal, but it prevents many of the problems teams encounter when a convenience command slowly becomes shared infrastructure. If a review Skill expects a pull-request number, say so. If a release workflow assumes a clean working tree, make that precondition visible. Hidden assumptions are what turn reusable automation into brittle folklore.
The description deserves particular attention because it influences discovery. It should say what the capability does and when it should be used, not simply repeat its name. A narrow description helps the system choose the right workflow and makes overlap with neighboring Skills easier to detect during review.
Inputs also need boundaries. If a workflow accepts arbitrary shell text, repository paths, and deployment targets through one free-form argument, it has a much wider risk surface than a workflow with a few explicit parameters. Interface design and security design are connected.
For CCA-F questions, this product mindset helps distinguish an on-demand reusable procedure from standing project guidance. If the thing has a trigger, parameters, a bounded job, and a repeatable result, it behaves more like a capability than like memory.
Reusable commands and Skills eventually change. Arguments are renamed, scripts move, dependencies evolve, and old behavior may no longer be safe. Because project-scoped workflows are shared, those changes should be versioned and reviewed like other repository artifacts rather than edited casually on one developer machine.
Keep the workflow small enough that reviewers can see what changed. If a Skill contains extensive reference material, split optional details into supporting files so the main instructions remain readable. Progressive disclosure is useful operationally because it keeps the primary contract visible while deeper material stays available when needed.
Teams should also remove dead workflows. An obsolete release command can be more dangerous than no command at all because its presence implies endorsement. Regularly compare the repository’s reusable capabilities with the real delivery process and retire anything that points to old infrastructure or deprecated policy.
Certification study should use the same discipline: learn the blueprint’s command-and-Skill distinctions, but verify current behavior before copying a configuration into production. The exam is a snapshot; your repository is a living system.
When evaluating an existing Skill or command, inspect how much hidden context it assumes. If it says “run the usual release checks” without naming those checks, the workflow is not actually portable. Reusable automation should carry enough context to work for a teammate who did not author it, while avoiding unrelated repository lore.
This is also where supporting resources become useful. Keep the core procedure concise and reference deeper material only when a step needs it. That preserves the workflow’s shape while still allowing detailed schemas, examples, or scripts to sit nearby.
Name collisions and overlapping descriptions deserve review because they make invocation unpredictable. Two capabilities that both claim to “review code” but apply different standards are a maintenance problem. Either narrow their descriptions, give them distinct roles, or consolidate them into one clearer workflow.
For CCA-F scenarios, look for the hidden reason a reusable workflow was chosen. Sometimes it is context efficiency; sometimes it is team sharing; sometimes it is parameterized invocation. The right mechanism follows the requirement, not the desire to use the newest feature.
Finally, remember that reuse magnifies mistakes. A poor one-off prompt fails once. A poorly designed shared Skill can repeat the same error across every repository and user who trusts it. Treat reusable agent capability with the same review discipline as reusable code.
