spec-session
Skill100 starsChanged 7 days agoMITView on GitHub
This skill should be used when a session SPECIFIES a Genesis change before it is planned or built: shaping the problem, the PRD, the architecture and the tickets a build session will take. Load `genesis-development` (the shared core) first. Do NOT load it for building (`build-session`), closing open PRs (`closing-session`), or post-merge verification (`validating-merges`).
In this repository19 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- genesis-external-clientSkill
- build-sessionSkill
- cc-updateSkill
- closing-sessionSkill
- code-intelligenceSkill
- content-publishSkill
- deliverable-builderSkill
- genesis-developmentSkill
- genesis-voiceSkill
- shelveSkill
- subsystem-mapSkill
- tasteSkill
- unshelveSkill
- validating-mergesSkill
- voice-masterSkill
- web-researchSkill
- youtube-fetchSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
Load
genesis-development(the shared core) first: if this session has not: it holds the review-chain, evidence and private-data rules … - Distinctive: line 74
Before claiming Genesis "lacks X", "needs to add X", or is "weaker than <external system> at X" — or before any competitive/architecture …
- Very specific: line 84
Verify built/enabled/disabled against RUNTIME state (env gates, server logs), not code presence.
- Distinctive: line 100
Standing user rule, 2026-09-09: Before writing repo-local code that decides something about a pull request, branch or merge, check whether …
- Very specific: line 126
Local hooks: keep everything reading THIS BOX or shaping THIS SESSION: review evidence and markers under ~/.genesis/, override sigils, the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Spec session
Load genesis-development (the shared core) first if this session has not:
it holds the review-chain, evidence and private-data rules every session uses.
A minimal skill for now; its process is designed later. Also read:
- the core's "Due diligence before building" and "Architecture Review"
(
.claude/skills/genesis-development/SKILL.md); .claude/skills/genesis-development/references/due-diligence.mdand.claude/skills/genesis-development/references/plan-docs.md;.claude/docs/premise-check.md, and theevaluateskill for any external candidate;build-session's "Generalizability Gate" before a spec names where code runs.
Plan documents carry a structured header
A plan doc that outlives one session (~/.claude/plans/<name>.md) opens with
YAML frontmatter naming what it commits to and what it was written against:
---
plan: <slug> # matches the filename
status: active # active | stalled | superseded | done
updated: 2026-09-15 # last revision of the LIVE section
pinned:
main: <12-hex> # origin/main as of the `updated` date above
binds: "<one line — what adopting this plan commits us to>"
prevents: "<one line — what it forecloses, or nothing>"
---Quote binds and prevents — they are prose, and unquoted, a ": " makes the
whole header unparseable while a " #" silently truncates the value
(binds: PR #2046 ships first loads as "PR").
Optional decisions: / ledger: / issues: lists name the trackers this plan
executes, in FULL ids, so a reader of either end can find the other. An absent
list means "none" — so only omit it once you have looked; write
issues: unchecked if you have not. In the body,
## ═══ SUPERSEDED BELOW ═══ divides live content from archaeology; no divider
means the whole file is live. What the body must STATE is set by "Due diligence
before building" in the core, for every development plan presented for approval.
pinned.main is the field that pays for itself: it makes
git fetch origin main --quiet && git log --oneline <pinned.main>..origin/main
a one-command staleness read, on a document whose line numbers and PR heads
otherwise go quietly false. The fetch is load-bearing — against an unfetched
origin/main the command prints nothing and reads as "no drift". A moved main
means re-verify, never that the plan is wrong.
Nothing checks any of this yet — the header is written by hand, and a plan
missing it fails silently. Rationale field-by-field, what the divider does NOT
do for a grepper, and what was and was not carried across from the upstream
schema: .claude/skills/genesis-development/references/plan-docs.md.
Auditing Existing Capabilities — enumerate, don't spot-check
Before claiming Genesis "lacks X", "needs to add X", or is "weaker than
<external system> at X" — or before any competitive/architecture comparison —
verify by ENUMERATION, not a spot-check. Auditing a symbol is not auditing the
stack, and a negative from a positive search is not evidence of absence:
- Enumerate the subsystem's full module inventory before concluding anything is absent.
- Trace the call graph BOTH directions — mechanisms often live in the
wrapper/caller layer, not the first symbol (CRAG lives in the MCP recall
wrapper, not
retrieval.py; the reranker is applied by the caller). - Grep by CONCEPT with several synonyms, not one symbol.
- Verify built/enabled/disabled against RUNTIME state (env gates, server logs), not code presence.
- Multi-path systems → coverage matrix (N entry points × M mechanisms); hot auto-fired paths often carry a thinner stack than the deep path — a gradient, not an absence.
- Confidence is capped by enumeration completeness.
A 2026-06-30 competitive audit wrongly claimed Genesis lacked CRAG,
scope-before-rank, and a live reranker — all three had already shipped. Full
protocol: procedure codebase_audit / CC memory audit-enumerate-not-spotcheck.
For "does Genesis already have X", consult the subsystem map
(docs/architecture/CURRENT.md, via the subsystem-map skill) FIRST;
.claude/skills/genesis-development/references/codebase-map.md stays the package-level structural companion.
Never reinvent what GitHub already does natively
Standing user rule, 2026-09-09. Before writing repo-local code that decides something about a pull request, branch or merge, check whether GitHub already enforces it: rulesets and required status checks, CODEOWNERS, review-thread resolution, stale-review dismissal on push, path-based labelling, issue and PR templates. If it does, use that — and only depart from it for a specific, concrete reason GitHub cannot meet, stated where the code lives.
Why this is a rule and not a preference. Enforcement written here is a
script that every install must have wired, correctly, forever; enforcement
written as GitHub config is one versioned thing that binds identically for
everyone and cannot drift between installs. MEASURED on this repo: hook WIRING
had silently diverged between two installs in a security hook, which is
invisible to CI because the scripts are tracked and the wiring is not.
git_push_guard.py is 8,971 lines (measured 2026-09-10; it was 8,222 on 09-09 — a figure in a durable doc is a claim with a date, re-measure rather than quote), and the fraction of it that only reads GitHub
state is the fraction that never needed to be local.
How the layers actually split — this is a division of labour, not a migration, and the third layer is not a consolation prize:
- GitHub config takes what is a FACT ABOUT GITHUB STATE: is this check green, is this branch behind, was this thread resolved, who owns this path.
- A required check run (issue #1670) takes composite judgements that still read only GitHub state — CI rollup identity, review freshness, finding scores. Port these one at a time, and DELETE each ported check from the local guard in the same PR. Two enforcers of one rule is replica drift with extra steps, and the copy nobody is watching is the one that goes wrong.
- Local hooks keep everything reading THIS BOX or shaping THIS SESSION:
review evidence and markers under
~/.genesis/, override sigils, the bash-safety and destructive-command guards, the round caps. These are not merge conditions at all — a PreToolUse guard runs before a command executes, which is a place GitHub has no presence. Round caps in particular: a research pass across production OSS review tooling found no implementation of them, so that machinery is ahead of the field rather than behind it.
The check before you build: name the GitHub feature you considered and why it does not fit. "I did not think to look" is the failure this rule exists to catch, and it is invisible afterwards — a hand-rolled implementation of a platform feature looks exactly like a hand-rolled implementation of something novel.
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.

