editing-skills
Skill517 starsChanged 3 days agoMITView on GitHub
Contract for adding, editing, moving, or removing skills in this repository (.claude/skills, .opencode/skills, .agents/skills, any SKILL.md): mirror classifications in src/config/skill-mirrors.ts, dual-tree byte-identical edits, bun run drift:check, bundling via BUNDLED_PROJECT_SKILLS, frontmatter conventions, and how to write trigger descriptions. Load before touching any SKILL.md file.
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 1 is distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 23
Look the slug up in src/config/skill-mirrors.ts:
- Distinctive: line 68
Update or remove the shim in the same change.
- Very specific: line 78
Only canonical package sources under .opencode/skills/ are published: package.json#files lists the bundled source directories and …
- Very specific: line 103
Every tracked static skill declares audience: swarm-plugin.
- Very specific: line 118
Keep SKILL.md under ~500 lines.
- Very specific: line 124
If the edit changed content wording (not just whitespace/formatting), read file:.swarm/bundled-skills/skill-edit-validation/SKILL.md and …
- Very specific: line 129
If you touched a byte-identical pair, diff the two files to prove identity.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill 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
Editing Skills in opencode-swarm
Skills in this repo exist across parallel trees (.opencode/skills/,
.claude/skills/, .agents/skills/) governed by explicit mirror contracts.
Editing a SKILL.md without knowing its contract silently desynchronizes the
OpenCode and Claude Code surfaces. Classify first, then edit.
Step 1 — Classify the skill
Look the slug up in src/config/skill-mirrors.ts:
- MIRRORED_ARCHITECT_MODE_SKILLS (brainstorm, specify, clarify-spec,
swarm-resume, clarify, discover, consult, pre-phase-briefing, council, deep-dive,
deep-research, issue-ingest, plan, critic-gate, design-docs):
.opencodeand.claudecopies must stay byte-identical. Any edit is a dual-tree edit — apply the identical change to both files. - ADAPTER (execute, phase-wrap, swarm-pr-review, swarm-pr-feedback,
swarm-pr-subscribe, swarm-ci-monitor):
.opencodeis canonical;.claudeand.agentswhere present are thin shims that must keep the exact relative reference../../../.opencode/skills/<slug>/SKILL.md(drift-check verifies the string).swarm-implementfollows the same operational adapter pattern, but is currently classified as an additional divergent contract because the additional-contract registry does not yet model non-architect adapter shims. - DIVERGENT: both trees exist, content intentionally differs — a
single-tree edit is fine.
codebase-review-swarmis inDIVERGENT_ARCHITECT_MODE_SKILLS;engineering-conventionsis a divergent entry inADDITIONAL_SKILL_MIRROR_CONTRACTS.swarm-implementandwriting-testsare classified divergent only because the additional-contract model does not yet have an adapter kind; operationally,.opencodeis canonical and.claudedelegates to it. - OPENCODE-ONLY:
loop(OPENCODE_ONLY_ARCHITECT_MODE_SKILLS) andrunning-tests(anopencode-onlyADDITIONAL contract) — do not create.claudemirrors (a.claude/skills/loopwould shadow Claude Code's built-in/loop). - ADDITIONAL contracts:
commit-prisdivergent(#1692). The.claudecopy is the repo-INTERNAL publication protocol (CI's pr-standards workflow declares it the source of truth); the.opencodecopy is the PORTABLE, project-agnostic version bundled into end-user projects, so the two trees intentionally differ — do not sync them byte-for-byte. The discovery shims in.agents/skills/commit-pr/and.github/skills/commit-pr/point at the repo-internal.claudefile as canonical. - Adapter skills (issue-tracer):
.opencode/skills/<slug>/SKILL.mdis the canonical protocol;.claude/skills/<slug>/SKILL.mdand.agents/skills/<slug>/SKILL.mdare thin shims that reference it via the relative path. Seesrc/config/skill-mirrors.tsfor thekind: adaptercontract. - No skill-mirrors.ts entry (qa-sweep, research-first, swarm, unswarm,
tech-debt-ci-review, rust-crate-ci, orchestrating-subagents, durable-session-state,
editing-skills, …): the
.claudefile is the source protocol and there is no.opencodecopy, no CI gate, and no npm shipment. But most are not single-file: many have a Codex adapter shim in.agents/skills/<slug>/that reads ".claude/skills/<slug>/SKILL.mdis the source protocol" (checkls .agents/skills/). Content edits to the.claudefile are safe — shims delegate — but renaming, moving, or removing one of these skills silently orphans its.agentsshim with zero drift-check coverage. Update or remove the shim in the same change. - Pre-flight for new skills (blocking): Before authoring any SKILL.md
content for a skill that should reach npm users, the slug MUST be registered
in all three places:
src/config/skill-mirrors.ts(classification),src/config/bundled-skills.ts(BUNDLED_PROJECT_SKILLS), andpackage.json#files. Creating content first and registering later is a common source of drift-check failures and missing shipments.
Step 2 — Know what ships where
- Only canonical package sources under
.opencode/skills/are published:package.json#fileslists the bundled source directories andBUNDLED_PROJECT_SKILLS(src/config/bundled-skills.ts) drives a private runtime sync to.swarm/bundled-skills/<slug>/at plugin init. Never sync into a target project's native skill roots. .claude/skills/is repo-internal — it configures Claude Code sessions in this repository only.- A new skill that should reach npm users must be added to all three:
.opencode/skills/<slug>/,BUNDLED_PROJECT_SKILLS, andpackage.json#files— the drift checker flags incomplete combinations. - A new cross-tree pair (same slug in both trees) must be classified in
src/config/skill-mirrors.ts, or drift-check reports it "unclassified".
Step 3 — MODE skills are not triggered by descriptions
The mirrored architect skills carry descriptions like "Full execution
protocol for MODE: PLAN". These are loaded on demand by the architect stubs
in src/agents/architect.ts when a [MODE: …] signal fires — they are
not meant to match natural user language, and in a plain Claude Code
session (no swarm runtime tools) they are protocol documentation, not
executable workflows. Do not "fix" their descriptions to natural language,
and do not expect them to auto-trigger.
Step 4 — Frontmatter and description conventions
- Every tracked static skill declares
audience: swarm-plugin. Consumer repos may instead use a domain tag such asragappv3and optionally add a runner constraint (runner:opencode,runner:claude, orrunner:codex). Keep byte-identical mirrors' audience lines byte-identical. Runtime-generated skills are intentionally allowed to omit the field (legacy match-all). descriptionis how Claude Code auto-selects skills: third person, the core use case and concrete trigger keywords first, under ~1024 chars. Vague descriptions ("helps with X") never trigger.disable-model-invocation: truefor slash-command-style skills the model must not self-invoke (swarm, unswarm, tech-debt-ci-review).- Supported optional fields used in this repo:
effort(low…max),context: fork+agent: Explore|Plan|general-purpose|<custom>(runs the skill body in an isolated subagent — the body then cannot rely on conversation history or on spawning further subagents),allowed-tools(space- or comma-separated),argument-hint. - Keep SKILL.md under ~500 lines; move deep material into
references/files linked one level from the SKILL.md (see issue-tracer for the pattern).
Step 5 — Validate and publish
- If the edit changed content wording (not just whitespace/formatting), read
file:.swarm/bundled-skills/skill-edit-validation/SKILL.mdand run its content-assertion sweep to catch stale test assertions before proceeding. bun run drift:check --enforce— CI runs the same enforcement mode; blocking drift findings fail the job, while the full report is posted as a PR comment.- If you touched a byte-identical pair,
diffthe two files to prove identity. - Skill-only diffs (no
src/,scripts/, or test changes) count as docs/meta-only for PR gating — no release-notes fragment required. The moment you also touchsrc/config/skill-mirrors.ts,bundled-skills.ts, orpackage.json, adocs/releases/pending/<slug>.mdfragment becomes mandatory (see commit-pr skill, Step 2). - Skill edits are still "changed work" under the swarm-mode contract: independent reviewer + critic gates apply before completion.
Other versions1 project uses a version of this.
Word for word · 1
- zaxbysauce/opencode-swarm★ 517100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository66 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- ci-fix-monitorSkill
- codebase-review-swarmSkill
- commit-prSkill
- contributingSkill
- engineering-conventionsSkill
- fork-pr-operationsSkill
- guardrail-patternsSkill
- issue-tracerSkill
- mock-to-internals-migrationSkill
- pr-review-fixSkill
- qa-sweepSkill
- research-firstSkill
- running-testsSkill
- subprocess-safetySkill
- swarm-ci-monitorSkill
- swarm-implementSkill
- swarm-pr-feedbackSkill
- swarm-pr-reviewSkill
- swarm-pr-subscribeSkill
- swarmSkill
- tech-debt-ci-reviewSkill
- test-file-splitSkill
- unswarmSkill
- writing-testsSkill
- brainstormSkill
- clarifySkill
- clarify-specSkill
- codebase-review-swarmSkill
- commit-prSkill
- consultSkill
- councilSkill
- critic-gateSkill
- deep-diveSkill
- deep-researchSkill
- design-docsSkill
- discoverSkill
- durable-session-stateSkill
- engineering-conventionsSkill
- executeSkill
- fork-pr-operationsSkill
- graphifySkill
- issue-ingestSkill
- issue-tracerSkill
- orchestrating-subagentsSkill
- phase-wrapSkill
- pre-phase-briefingSkill
- qa-sweepSkill
- research-firstSkill
- rust-crate-ciSkill
- specifySkill
- swarm-ci-monitorSkill
- swarm-implementSkill
- swarm-planSkill
- swarm-pr-feedbackSkill
- swarm-pr-reviewSkill
- swarm-pr-subscribeSkill
- swarm-resumeSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

