Skip to content

CCAR-F · Domain 3: Claude Code Configuration & Workflows · 20% of the exam

Task 3.2: Create and configure custom slash commands and skills

Project and personal commands and skills, SKILL.md frontmatter such as context: fork, allowed-tools and argument-hint, and choosing a skill for on-demand workflows versus CLAUDE.md for standards that always apply.

Study it

  • Custom commands and skills: scope, SKILL.md frontmatter and when to use a skill

    Lesson coming

Sample questions

Try each one before opening the answer. Every option is explained, with the Anthropic documentation page that proves it.

Question 1 · choose 1

A developer built a /release-notes skill in ~/.claude/skills/release-notes/SKILL.md, and the team now wants everyone who clones the repository to have it with no extra setup, with changes reviewed in this repository's pull requests. Where should the skill live?

  1. AIn a plugin published to the team's marketplace, which each developer then installs
  2. BIn the developer's ~/.claude/skills/, with each teammate adding that folder to their sessions with --add-dir
  3. CIn a nested docs/.claude/skills/release-notes/ folder, so that it loads only when it is needed
  4. DIn .claude/skills/release-notes/SKILL.md inside the repository, committed with the rest of the code
Show the answer and why
  • AIn a plugin published to the team's marketplace, which each developer then installs

    Incorrect

    A plugin can share skills, but each developer has to install it, and its changes are reviewed wherever the plugin lives, not with this repository.

  • BIn the developer's ~/.claude/skills/, with each teammate adding that folder to their sessions with --add-dir

    Incorrect

    The folder exists only on the author's machine; teammates would have nothing to add, and nothing goes through pull requests.

  • CIn a nested docs/.claude/skills/release-notes/ folder, so that it loads only when it is needed

    Incorrect

    A nested skill loads only once Claude works on files under docs/, so /release-notes would not be available from the start of a session.

  • DIn .claude/skills/release-notes/SKILL.md inside the repository, committed with the rest of the code

    Correct

    Project skills load in sessions in that repository and reach the team through version control.

Skills in a repository's .claude/skills/ directory are shared with everyone who works in it; ~/.claude/skills/ is for personal skills. Older .claude/commands/ files still work the same way.

Question 2 · choose 1

Your team's /analyze-deps skill walks the whole dependency graph and prints thousands of lines before its short conclusion. After running it, developers find their main conversation crowded and Claude less focused on the task they return to. The skill's instructions are complete on their own. Which change to SKILL.md addresses this?

  1. AMove the skill's instructions into CLAUDE.md so that they are part of the context from the start
  2. BAdd model: haiku so that the skill runs on a smaller, faster model
  3. CAdd context: fork to the frontmatter so the skill runs in a subagent and only its result returns
  4. DAdd allowed-tools listing only Read and Grep so that the skill does less work when it runs
Show the answer and why
  • AMove the skill's instructions into CLAUDE.md so that they are part of the context from the start

    Incorrect

    That puts the instructions in every session and does nothing about the thousands of lines the analysis produces.

  • BAdd model: haiku so that the skill runs on a smaller, faster model

    Incorrect

    A different model changes cost and speed, not where the output lands; it still fills the main conversation.

  • CAdd context: fork to the frontmatter so the skill runs in a subagent and only its result returns

    Correct

    A forked skill runs in an isolated subagent context, so the verbose output stays there and the main conversation receives the result.

  • DAdd allowed-tools listing only Read and Grep so that the skill does less work when it runs

    Incorrect

    Changing which tools the skill uses does not keep its output out of the main conversation.

context: fork runs a skill in a separate subagent with the skill content as its task. Use it for skills with verbose or exploratory output that should not pollute the main session.

Question 3 · choose 1

You want /migrate-component SearchBar JavaScript TypeScript to fill three separate places in a skill's instructions with the component name, the source language and the target language. How do you reference them?

  1. AWith {{component}}, {{from}} and {{to}} placeholders
  2. BWith positional placeholders such as $0, $1 and $2
  3. COnly with $ARGUMENTS, which cannot be split into parts
  4. DWith environment variables that the skill reads at runtime
Show the answer and why
  • AWith {{component}}, {{from}} and {{to}} placeholders

    Incorrect

    Skill substitution does not use that template syntax.

  • BWith positional placeholders such as $0, $1 and $2

    Correct

    $ARGUMENTS[N] and its shorthand $N access individual arguments.

  • COnly with $ARGUMENTS, which cannot be split into parts

    Incorrect

    $ARGUMENTS holds them all, but indexed forms address each one.

  • DWith environment variables that the skill reads at runtime

    Incorrect

    Arguments are substituted directly into the skill content.

Skills receive arguments through $ARGUMENTS, indexed forms such as $ARGUMENTS[0] or $0, or named arguments declared in frontmatter.

Question 4 · choose 1

Your repository has an older command file at .claude/commands/frontend/component.md. What do developers type to run it?

  1. A/frontend:component
  2. B/frontend/component
  3. C/component
  4. DNothing; files in subfolders are not loaded
Show the answer and why
  • A/frontend:component

    Correct

    Subdirectories in .claude/commands/ become part of the name, joined by a colon.

  • B/frontend/component

    Incorrect

    Slashes in the path are replaced by colons in the command name.

  • C/component

    Incorrect

    The subdirectory is part of the command name.

  • DNothing; files in subfolders are not loaded

    Incorrect

    Files in subdirectories of .claude/commands/ load as commands.

Command files keep working alongside skills; a file in a subdirectory of .claude/commands/ is named by its path with colons.

Question 5 · choose 1

Your /api-client skill needs a 3,000-line API specification for some tasks but not most. Loading it every time the skill runs wastes context. How should you package it?

  1. AKeep the spec as a supporting file in the skill folder
  2. BPut the spec in the project CLAUDE.md
  3. CSplit the spec into twenty separate skills
  4. DPaste the full spec into SKILL.md so it is always available
Show the answer and why
  • AKeep the spec as a supporting file in the skill folder

    Correct

    Supporting files are loaded only when Claude needs them.

  • BPut the spec in the project CLAUDE.md

    Incorrect

    That loads it into every session, skill or not.

  • CSplit the spec into twenty separate skills

    Incorrect

    Many skills for one reference document adds clutter to the menu.

  • DPaste the full spec into SKILL.md so it is always available

    Incorrect

    That loads the whole spec on every invocation.

Keep SKILL.md focused and place large reference material in supporting files in the skill directory, referenced from SKILL.md and loaded on demand.

Question 6 · choose 1

Your /triage-loop skill runs unattended for a while and must never ask the user a question, so AskUserQuestion should be unavailable while the skill is active, without changing other sessions. What should you add to its frontmatter?

  1. Auser-invocable: false, so that only Claude starts the loop
  2. Ballowed-tools listing every tool except AskUserQuestion
  3. Ccontext: fork, so that the loop runs in a subagent
  4. Ddisallowed-tools: AskUserQuestion, while the skill runs
Show the answer and why
  • Auser-invocable: false, so that only Claude starts the loop

    Incorrect

    This changes who can invoke the skill, not which tools it can use.

  • Ballowed-tools listing every tool except AskUserQuestion

    Incorrect

    Listing tools there does not take AskUserQuestion away.

  • Ccontext: fork, so that the loop runs in a subagent

    Incorrect

    A separate context does not remove the tool from the loop.

  • Ddisallowed-tools: AskUserQuestion, while the skill runs

    Correct

    disallowed-tools removes the listed tools from the available pool while the skill is active.

Use disallowed-tools in SKILL.md frontmatter to remove tools while a skill is active; the restriction clears when the user sends the next message.

Question 7 · choose 1

Your skill's description opens with three sentences of history and only then says what the skill does. Claude rarely picks the skill up, even for requests it fits. What should you change?

  1. AMove the description into the skill body
  2. BMake the description longer so that it is more complete
  3. CLead with what the skill does and when to use it
  4. DRename the skill folder to start with "a" so it sorts first
Show the answer and why
  • AMove the description into the skill body

    Incorrect

    Claude decides from the description in the listing, not the body.

  • BMake the description longer so that it is more complete

    Incorrect

    Extra history pushes the useful part further toward the cut.

  • CLead with what the skill does and when to use it

    Correct

    The description is how Claude decides relevance, and long listings are truncated, so the key use case goes first.

  • DRename the skill folder to start with "a" so it sorts first

    Incorrect

    Ordering does not explain what the skill is for.

Put the key use case first in a skill's description: Claude uses it to choose skills, and the combined description is truncated in the listing.

Practise domain 3 →Practise all domains →