Compass skill synthesis
COMPASS protocol — when an agent or squad detects a capability gap (no existing skill or specialist covers a recurring need), synthesize a new skill (SKILL.md + optional executable code) and assign it to the best-qualified agent. Use when a task fails or stalls because "no skill covers this", when the same ad-hoc procedure gets re-derived across sessions, or when the router agent receives a request that fits no specialist. Not for one-off tasks — synthesis requires expected reuse.From its SKILL.md
npx -y skills add hlrd93/over-quali --skill compass-skill-synthesisAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.1 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
COMPASS: Cooperative Multi-Agent Planning with Adaptive Skill Synthesis
Detect what's missing → synthesize it as an executable/instructable skill → hand it to the best-qualified teammate. This is the mechanism for growing a skill library deliberately instead of re-deriving procedures every session.
Grounding: adapted from Li, Zhao & Pajarinen, Cooperative Multi-Agent Planning with Adaptive Skill Synthesis (arXiv:2502.10148). The paper's core mechanisms map here as: skills = executable functions with documentation, retrieved semantically via that documentation (→ the SKILL.md frontmatter description is the retrieval index — write it as trigger conditions, it's what other agents match against); synthesis trigger = "task reasoning identifies inadequate skill alignment" (→ the gap signals below); and a closed-loop cycle of Perception → Task Reasoning → Actor → Self-Reflection (→ steps 1-6 plus the reflection step). COMPASS is training-free — no RL; improvement comes from library growth and reflection, which is exactly what an agent harness can do without touching model weights.
When to trigger (gap detection)
Any of these is a COMPASS signal — the agent that notices it reports the gap to the session lead or the router agent instead of silently improvising:
- A task requires a procedure that no installed skill (
.claude/skills/) covers and no agent definition documents. - The same multi-step procedure has been improvised ad hoc in ≥2 sessions (check the ledger for repeated
improvisedentries). - A specialist declines a task as out-of-scope and no other specialist's charter covers it.
- A vendor or tool integration (an API client, a database, a storage layer, an external service) is being scripted inline instead of through a reusable interface.
Synthesis procedure
- Specify the gap in one paragraph: what capability is missing, which task(s) failed or stalled without it, and the expected reuse (which workstreams will need it again). No expected reuse → stop, solve inline, log it as
improvisedin the ledger (see the SAGE skill) so repetition becomes detectable. - Check for near-misses first: an existing skill that almost covers it should be extended (edit its SKILL.md, or add a script to its directory) rather than duplicated. Read your
.claude/skills/directory and your agent registry before creating anything. - Synthesize the skill at
.claude/skills/<kebab-name>/:SKILL.mdwithname+descriptionfrontmatter. The description must state the trigger conditions ("Use when…") — that is what makes the skill discoverable by other agents.- When the capability is procedural code (a probe, a calculator, a fixture generator), include executable code under the skill directory (e.g.
scripts/<name>.py), typed and runnable, with a usage example in the SKILL.md. Executable beats prose when the procedure is deterministic. - Match your project's language convention.
- Assign to the best-qualified agent — the one whose file-ownership and charter matches the skill's domain, not whoever discovered the gap. Add the skill to that agent's "skills at your disposal" section in
.claude/agents/<agent>.md, with a one-line "use when" note. - Register: add a row to the skills table in your agent registry, and log a
synthesizedentry in the ledger (skill name, gap it closes, assigned agent, date). - Prove it once: the assigned agent (not the synthesizer) runs the skill on the originating task. If it doesn't work in their hands, the synthesis isn't done — iterate before closing.
- Self-reflect (the paper's closed-loop step): after the proving run, the assignee writes 2-3 sentences of verbal feedback — what the skill got right, what was ambiguous or wrong in its instructions, what a future user needs to know — into the ledger entry's note. The synthesizer folds that feedback into the SKILL.md before the synthesis is closed. A skill that ships without a reflection pass is a first draft, not a library entry.
Bootstrapping (seeding the library from past demonstrations)
The paper bootstraps its skill library from expert demonstrations before live synthesis. The equivalent here: past sessions where a procedure was improvised successfully are the demonstrations. On request ("bootstrap skills", "COMPASS bootstrap") or when the ledger accumulates improvised entries: review them plus recent git history and session summaries, identify successfully-improvised procedures with expected reuse, and synthesize skills from those proven traces (steps 3-7 above) rather than waiting for the ≥2-repetition trigger. Skills distilled from a working trace start higher-quality than skills invented from a spec.
Sharing rules
- The synthesizer and the assignee are usually different agents — COMPASS is cooperative. The synthesizer writes for the assignee's context (their charter, their conventions), not their own.
- A skill assigned to one specialist is still invocable by anyone; assignment means ownership (that agent maintains it and is the default executor), not exclusivity.
- New skills that encode an architectural decision need sign-off from whoever owns architecture on your team — synthesis must not become a side channel around your decision-record process.
- Partial observability is the default (each agent sees only its own context window — the paper's core constraint). Anything a teammate will need must travel explicitly: leads relay findings between teammates ("multi-hop"), spawn prompts carry self-contained briefs, and durable knowledge lands in docs, skills, or the ledger — never assume another agent saw this session.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.