mana
CLAUDE.md1 starsChanged 16 days agoMITView on GitHub
This is the mana skills repo. It is both a Claude Code plugin (mana, marketplace frankieramirez) and a skills.sh source. One layout serves both: skills/<name>/SKILL.md plus agents/.
We split this CLAUDE.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 7
Every SKILL.md has frontmatter with name equal to its directory name and a description that says when to use it, including the trigger …
- Very specific: line 19
Every behavior change bumps version in .claude-plugin/plugin.json and gets a line in CHANGELOG.md.
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 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.
Files
Working in this repo
This is the mana skills repo. It is both a Claude Code plugin (mana, marketplace frankieramirez) and a skills.sh source. One layout serves both: skills/<name>/SKILL.md plus agents/.
Conventions
- Every
SKILL.mdhas frontmatter withnameequal to its directory name and adescriptionthat says when to use it, including the trigger phrases a user would type. - A skill is named for the spell it casts (
scan,remedy,dispel,mimic,banish,scry,cast,sift,mend,reveal,augur,conjure,attune,ward,ultima,portal,leyline). The one exception issetup-mana, named for what a new user would type. The name is flavour and only has to be typed. Thedescriptionis what the model matches on, so it stays plain English, names the job, and lists the words a user would actually say. Never put the theme in a description, because nobody asks to have their prose dispelled. - Ship files (
capture.md,body.md,attach.md,open-pr.sh,text-frame.sh) live underskills/reveal/and are copied toskills/cast/. Edit the reveal copies;scripts/validate.shchecks they match. - Ticket files (
agent-brief.md,tickets.sh) live underskills/sift/and are copied toskills/conjure/,skills/cast/,skills/scry/,skills/ultima/, and (tickets.shonly)skills/setup-mana/,skills/scan/,skills/attune/,skills/portal/, andskills/vision/.skills/conjure/references/build-progress.mdis copied toskills/cast/andskills/scry/; edit the conjure copy.skills/scry/scripts/map.shis copied toskills/portal/andskills/vision/; edit the scry copy. Edit the sift copies; the same script checks they match.setup-manaownsreferences/triage-labels.md, whichattunecopies under the same rule.skills/augur/references/proof.mdandskills/augur/scripts/prove.share copied toskills/scan/; edit the augur copies.skills/leyline/references/control-evidence.mdandskills/leyline/scripts/conform.share copied toskills/sift/,skills/cast/, andskills/scan/; edit the leyline copies. Every label, issue, edge, claim, andnextlookup on the tracker goes throughtickets.sh, never a hand-writtengh issuecall. - The tracker is whatever
docs/agents/issue-tracker.mdin the user's repo says: GitHub, Linear, Jira, local files, or prose the user wrote.setup-manawrites that file from the templates underskills/setup-mana/references/. A skill that touches tickets reads the file first and passes itsAdapter flags:totickets.sh. - Prose follows the
dispelskill: no em or en dashes, no "not X but Y", no rule of three, lead with the point.scripts/validate.shfails on dashes. - The prose rules stop at
evals/. Eval prompts are written as slop on purpose, because that is the input a skill has to clean up, so the dash check inscripts/validate.shscansskills,agents,output-styles,README.md, andCLAUDE.mdand leavesevals/alone. Widening that grep breaks the suite. - A skill's supporting files live in
references/and are loaded by stage, not all at once. Name the stage that loads each one insideSKILL.md. - Scripts under
skills/*/scripts/are bash. The GitHub paths depend only ongitandgh. The Linear and Jira paths insidetickets.shusepython3with the standard library and nothing else. No jq binary, no node, no pip packages. - A
SKILL.mdshows a bundled script with its path written into the command, asbash "<SKILL_DIR>/scripts/x.sh". NeverSKILL_DIR="..."on a line above it. A worktree-isolated or sandboxed session refuses an interpreter whose script path it cannot read off the command line, so the variable form costs the run several turns before the model falls back. Variables in other arguments are fine. - The Archmage voice lives in
skills/attune/references/archmage.md, witharchmage-session.mdandpersona-activation.mdbeside it.scripts/sync-persona.shcopies the voice into every skill, rewrites each activation block, and generatesoutput-styles/archmage.mdfor Claude Code. Edit the attune sources and run that script. - Everything under
agents/is generated. Edit the reference file named in the manifest inscripts/shared-assets.json(skills/banish/references/comment-reaper.md,skills/mimic/references/ghost.md,skills/mend/references/weaver.md) and runscripts/sync-assets.sh. Adding an agent means a new manifest entry plus a line inplugin.json. - Every behavior change bumps
versionin.claude-plugin/plugin.jsonand gets a line inCHANGELOG.md. Claude Code caches plugins by version, so a change without a bump does not reach installed copies. - Nothing here references another plugin, marketplace, or skill by name. Skills must work standalone under Codex, Cursor, or Copilot where only the
SKILL.mdand its folder are installed. The one exception isportal, whose job is to name the skill it hands off to; it reads a sibling'sSKILL.mdwhen the folder is present and falls back to a plain prompt when it is not.
Checks
scripts/validate.shbefore every commit. CI runs the same script.scripts/similarity.pywhen touchingscanorremedy: those started as forks and the rewrite is only done while every ratio stays under 0.30.
Local development
scripts/link-local.sh symlinks this checkout into ~/.claude/skills and ~/.claude/agents. Uninstall the mana plugin first (claude plugin uninstall mana@frankieramirez) or every skill appears twice.
Agent skills
Issue tracker: GitHub frankieramirez/mana. See docs/agents/issue-tracker.md.
Triage labels: defaults. See docs/agents/triage-labels.md.
Validation: scripts/validate.sh
Proof: command output as an image
Domain docs: single-context: CONTEXT.md and docs/adr/
Shared-asset ownership lives in scripts/shared-assets.json. Run scripts/sync-assets.sh after canonical edits; its --check mode is read-only. The agent and persona sync commands are scoped wrappers.
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.

