kb-synthesize
Skill0 starsChanged 29 days agoMITView on GitHub
Write a new dated state snapshot for a product track (track-a, track-b, shared) from everything filed since the last one, and refresh STATE.md from it. Use when the user says: synthesize, snapshot, roll up current state, refresh the architecture doc.
In this repository16 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- add-entrySkill
- add-todoSkill
- complete-todoSkill
- deadlinesSkill
- financeSkill
- financial-summarySkill
- kb-add-folderSkill
- kb-archiveSkill
- kb-auditSkill
- kb-promoteSkill
- kbSkill
- meetingSkill
- studySkill
- study-statusSkill
- study-unstudiedSkill
The file
Files
/kb-synthesize <product>
Usage: /kb-synthesize track-a (or track-b, or shared).
This skill is a drift detector, not just a roll-up. It recency-weights recent commits to propose the CURRENT framing, and propagates a corrected one-liner to the always-loaded T1 layer (GLOSSARY.md) — but only when confident.
- Acquire
runs/.lock. - Baseline. Most recent
synthesis/*.mdwith matchingproduct:. Itsdate_foundis the baseline; note itsone_liner:(the prior framing). - Collect the delta.
git log --since="<baseline>" --name-only, then keep every changed*.mdwhose frontmatterproduct:matches — across ALL content folders, EXCLUDING only the operational ones:todos/ finances/ runs/ raw/ archive/ schema/ scripts/ study-sessions/ team/ .claude/. (Do NOT use a hardcoded include-list — that silently misses folders. In particulardiscovery/andadvisors/carry customer-call + advisor-thread signal where positioning shifts surface; an include-list that omits them blinds the drift detector.)team/is excluded because it is operational by nature (person profiles, prefs, voice cards); strategic substance belongs inbrainstorming//strategy//decisions/(which ARE scanned) — if it's sitting inteam/, it's misfiled, promote it rather than tag it. Untagged files (noproduct:) are skipped — tag them if they should feed synthesis. - No-delta short-circuit (the periodic-run path). If the delta is empty or trivial (only typo/index commits), DO NOT create a new snapshot. Instead: bump
last_verified: <today>on the existing synthesis, runpython3 scripts/propagate-oneliner.py(re-assert the one-liner), stageGLOSSARY.md+ the synthesis, commitsynthesis: verify <product> still-current @ <date>, push, release lock, STOP. Report "still current as of<date>." - Read the delta, recency-weighted. Newer commits outweigh older when deciding "what are we NOW." A late brainstorm/decision/strategy beats an early one on the same question.
- Propose
one_liner+confidence+ tension check. Write one current-framing sentence. PRESERVE source hedges —likely,target,exploringstay; never harden an exploration into "we ARE X." Then assess:confidence:high|medium|low, and tension — do recent committed sources contradict each other on the framing (e.g. one leads with one customer segment, the freshest with another)? - Create
synthesis/YYYY-MM-DD-<product>-architecture.mdfromschema/templates/synthesis.md. Frontmatter:supersedes:the prior file,one_liner:your proposed sentence,last_verified: <today>,confidence:. - Stamp the superseded file. On the prior synthesis add
superseded_by: synthesis/<new>.mdAND a top-of-body banner> ⚠️ Superseded by [[synthesis/<new>]] — <date>. (kb-lint requires the banner whensuperseded_byis set.) - Fill body. Required:
## Counter-arguments,## Data gaps. Cite the decisions/brainstorms you consolidated. Anti-sycophancy is structural — do not skip. - Confidence-tiered T1 propagation:
- High confidence AND no tension → run
python3 scripts/propagate-oneliner.py(writes the new one-liner intoGLOSSARY.md). StageGLOSSARY.md. - Medium/low confidence OR unresolved tension → DO NOT propagate. Write
runs/YYYY-MM-DD-<product>-drift.md:NEEDS HUMAN: framing in transition — <the tension>; proposed one-liner: <...>; not propagated to GLOSSARY pending confirmation.LeaveGLOSSARY.mduntouched.
- High confidence AND no tension → run
10a. Refresh STATE.md from the snapshot. STATE.md is the always-loaded short form of the synthesis. Walk it section by section against the new snapshot and the delta; correct every line that moved, remove what is no longer true, set as-of: to today. Then list for the user every non-superseded strategy/ and brainstorming/ file older than the previous snapshot whose framing the new snapshot retires, and ask supersede-or-keep for each (stamp the ones they retire). Also list positions the snapshot treats as settled that have no decisions/ file.
- Regenerate INDEXes:
python3 scripts/rebuild-indexes.py. Stage changedINDEX.md. - Commit + push.
synthesis: snapshot <product> @ YYYY-MM-DD. Pre-commit lint enforces: GLOSSARY one-liner matches source (if you propagated) + superseded file has its banner. Fix any failure — never--no-verify. - Release the lock. Report: new snapshot, confidence, and whether T1 was updated or a
NEEDS HUMANflag was written.
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.

