agentleFS
ProjectAJ14ProjectAJ14/eklavya/skills/CLAUDE.md

eklavya / skills

CLAUDE.md29 starsChanged 22 days agoMITView on GitHub

Skills define model behavior; the runtime owns data and arithmetic. A stale sentence can change the product without raising an error. Read the root CLAUDE.md, then verify instructions against the tool implementation. Each skill has a directory and SKILL.md with name and description. disable-model-invocation: true makes the entry user-invoked only. The shipped slash commands are gate, learn, level, memory, mode, pack, progress, quiz, setup, skip and toolprune. Recount from frontmatter when changing this inventory. Never move user-skill/ entries into skills/:…

The file

We split this CLAUDE.md into the rules it gives an agent

12 rules. About 0 are common, 5 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Never move user-skill/ entries into skills/: they would register twice.

    line 22
  2. Distinctive:

    Keep artifact design instructions and the explainer's summary aligned.

    line 23
  3. Very specific:

    Use an explicit ID only when supplied by the host or required by the task.

    line 39
  4. Very specific:

    Read defaults from mcp/src/config.ts: focus is concept.

    line 52
  5. Distinctive:

    Stop hooks can still ask questions.

    line 56
  6. Very specific:

    Follow the plan's ask_attribution for host-specific [Eklavya] attribution.

    line 58
  7. Very specific:

    Keep declined, dont_know and invalid (the question's fault, grades nothing) distinct, MCQ grading capped as the runtime requires, and …

    line 71
  8. Distinctive:

    Keep the entry point within the packaging test's 2,000-whitespace-token limit.

    line 83
  9. Distinctive:

    Every referenced file must exist and every reference file must be reachable from the entry point.

    line 84
  10. Very specific:

    Update the corresponding manual page in the same PR: commands in commands, settings in dials/configuration, grading in grading-engine, …

    line 108
  11. Distinctive:

    Update the landing command list if the public command set changes.

    line 111
  12. Very specific:

    Run the relevant packaging, CLI and tool tests from mcp/ through npm test so bundled assets are rebuilt.

    line 114

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

Editing skills and agent instructions

Skills define model behavior; the runtime owns data and arithmetic. A stale sentence can change the product without raising an error. Read the root CLAUDE.md, then verify instructions against the tool implementation.

Entry points and ownership

Each skill has a directory and SKILL.md with name and description. disable-model-invocation: true makes the entry user-invoked only. The shipped slash commands are gate, learn, level, memory, mode, pack, progress, quiz, setup, skip and toolprune. Recount from frontmatter when changing this inventory.

LocationResponsibility
skills/tutor/Shared pedagogy; commands defer to it rather than duplicate it
user-skill/eklavya/Plain-chat configuration and CLI help, and drafting a GitHub issue when someone reports a problem with Eklavya itself (shown in full, filed only after a clear yes), installed to ~/.claude/skills/; does not teach
user-skill/eklavya-artifacts/Create pages through eklavya artifacts new, which owns paths, metadata and template
agents/tutor.mdRead-only file access and selected learning/memory tools; teaches builder-logged concepts and uses lettered text without AskUserQuestion
agents/explainer.mdBackground artifact writer; no Eklavya MCP tools, grading or concept logging

Never move user-skill/ entries into skills/: they would register twice. Keep artifact design instructions and the explainer's summary aligned.

Model-invocable descriptions should state triggering conditions, in third person, starting “Use when”; put workflow, tool order and grading in the body. A summary in the description invites the model to skip reading the rules. User-invoked command descriptions instead serve as concise help. Agent descriptions also need their role so they can be selected from a roster.

Check the API before writing instructions

Open the relevant file in mcp/src/tools/ before saying “call X with Y”. Verify the input schema and every returned field the instruction uses. Learning tools mostly have individual files; config, memory read/write, code and collections tools are grouped. tools/index.ts is the advertised inventory.

Normally omit session_id: tools that support it resolve the current session. Use an explicit ID only when supplied by the host or required by the task. log_session_concepts, upsert_concepts, get_session_quiz_plan, record_attempt, get_gate_status, get_config and set_config accept it for session resolution. memory_timeline also accepts it, but as a filter: omitting it shows the whole project. Check each schema instead of assuming all tools accept the same fields.

Memory follows “search, choose, then get”. Search returns a small index; memory_get returns the chosen narrative. Hydrating every result defeats the context-saving design.

Preserve the tutoring contract

  • Read defaults from mcp/src/config.ts: focus is concept. Search every skill, user skill, agent and manual page when changing a shared setting.
  • Planner output is authoritative. As-you-go questions are capped at one only when unenforced and without an explicit topic; explicit max wins. Unenforced Stop hooks can still ask questions.
  • Settings belong in eklavya statusline, not a hand-composed question header. Follow the plan's ask_attribution for host-specific [Eklavya] attribution; never hardcode a terminal-only rendering rule. Do not display tier/counter lines above a stem.
  • stripAskHeader in ask.ts remains necessary for old recorded questions and stable fingerprints. Removing it changes duplicate detection for history.
  • Honor list caps and truncation. Profile known is strongest-first, not most recent; graph results can be incomplete. Recount seed totals before quoting.
  • presentation in the plan decides the tool: "tool" is AskUserQuestion (follow ask_attribution, then record_attempt and the verdict); "panel" is present_question (no attribution, no record_attempt, no verdict, no waiting). The panel instructions live in tutor/references/panel.md, not in writing-mcq.md, so a card question never reads them. The tutor subagent has no present_question and ignores "panel".
  • Keep declined, dont_know and invalid (the question's fault, grades nothing) distinct, MCQ grading capped as the runtime requires, and one-question/resume behavior intact.

The tutor entry point chooses whether to act and points to required references:

ReferenceRead before
tutor/references/writing-mcq.mdWriting the stem, options and recorded question
tutor/references/grading.mdGrading, feedback, blanks and repeated teaching
tutor/references/focus-and-level.mdApplying focus, earned levels, cadence and gate retries

Mark references REQUIRED at their point of use. Do not use eager @ imports. Keep the entry point within the packaging test's 2,000-whitespace-token limit. Every referenced file must exist and every reference file must be reachable from the entry point; the packaging test checks both directions.

For craft, describe the desired shape in build order, followed by a checklist. For pressure failures such as grade inflation, retain explicit prohibitions and the rationalization they prevent. Avoid vague exceptions that let the model renegotiate a recipe; genuine framing exceptions belong in planner output.

Bundling and host limits

copy-assets.mjs bundles the tutor directory. eklavya export-rules strips frontmatter and inlines reference files alphabetically for consumers that do not load them on demand. Missing references must fail export, not emit partial pedagogy. Keep shared tutor material independent of plugin paths, hook mechanics and slash commands; the tutor agent supplies the plain-text fallback for AskUserQuestion.

Rule export does not provide another editor with Claude Code hooks. Do not advertise equivalent ambient learning on a host without that integration. Delegation policy lives in docs/subagent-policy.md; the tutor exemption from the implementer's “do not ask” directive must remain deliberate.

Documentation and checks

Update the corresponding manual page in the same PR: commands in commands, settings in dials/configuration, grading in grading-engine, levels in levels-and-tiers, artifacts in dashboard, and setup in first-run. Update the landing command list if the public command set changes. Search other skills for duplicated claims rather than fixing only the entry you touched.

Run the relevant packaging, CLI and tool tests from mcp/ through npm test so bundled assets are rebuilt. Tutor behavior changes also require before/after evaluation (eval/README.md) and the live checkpoint acceptance check (CONTRIBUTING.md). A successful build alone cannot verify prompt behavior. Build web/ for documentation edits and record any check not run.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.