feat(skills): worktree, plan en cedafy-claude-md — de keten brainstorm → plan → uitvoering rond - #71
Conversation
Legt vast: worktree- en plan-skills vendoren uit superpowers (MIT), brainstorm koppelen aan /plan, een minimale CLAUDE.md-template als werkafspraak op niveau Experiment, en cedafy-claude-md om die template op bestaande repos toe te passen met AskUserQuestion bij conflicten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Kale paden tussen backticks kan de gebruiker niet openen. Regel dekt zowel chat als markdown, inclusief het worktree-pad. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Twee sessie-start-skills die CEDA miste, overgenomen uit superpowers (MIT, (c) 2025 Jesse Vincent) en aangepast aan onze conventies: - worktree: CEDA-branchnaming (issue-<nr>-<slug> / fix-<slug>), projectsetup voor de uv/R/npm-stack, Nederlandse output. Kern van het origineel behouden: eerst detecteren of je al geisoleerd zit, dan het native mechanisme, en pas als laatste `git worktree add` -- die volgorde voorkomt worktrees die de harness niet kent en niet opruimt. - plan: schrijft naar docs/plans/ en laat de taken via /write-issue op het CEDA-board landen in plaats van in een losse checklist. De superpowers-specifieke uitvoerskills zijn eruit; die zijn niet org-breed beschikbaar. brainstorm krijgt de eindstap die ontbrak: bij een expliciete go is het vervolg /plan, tenzij de diff in een zin te beschrijven is. De description krijgt de terugwijzende exclusion-clause die daarbij hoort -- zonder die wijziging meldt de collectie-brede validator terecht overlappende triggerwoorden tussen brainstorm en plan. Validator: worktree, plan en brainstorm elk 0 fouten, 0 waarschuwingen. Collectie-breed 111 -> 110 waarschuwingen, geen enkele noemt de nieuwe skills. Refs docs/specs/2026-08-14-claude-md-baseline-design.md stap 2 en 3.
cedafy-claude-md brengt een bestaande repo op de CEDA-baseline zonder weg te gooien wat die repo zelf al besloot. Elk template-punt gaat in een van drie bakken: ontbreekt (direct invoegen), al gedekt (niets doen), tegenstrijdig (voorleggen via het keuzemenu, drie opties, de gecombineerde tekst staat in de optie zelf). Twijfelgeval telt als tegenstrijdig -- een vraag te veel is goedkoper dan een stilzwijgend overschreven afspraak. De skill haalt het sjabloon via `gh api` uit cedanl/.github in plaats van uit een lokaal pad, want hij draait per definitie in een andere repo. init-repo schreef zijn eigen CLAUDE.md-sjabloon inline, met modulekaart, architectuur en projectstructuur erin. Dat is nu een verwijzing naar hetzelfde org-sjabloon, met de expliciete instructie die secties er niet aan toe te voegen: het bestand wordt elke sessie geladen, en te lang betekent half genegeerd. Description krijgt de terugwijzende clause naar cedafy-claude-md. Validator: beide 0 fouten, 0 waarschuwingen. Collectie-breed 110 waarschuwingen, geen enkele noemt een van de nieuwe skills. Refs docs/specs/2026-08-14-claude-md-baseline-design.md stap 5 en 6.
Zes punten uit de vergelijking met superpowers:brainstorming en superpowers:writing-plans, na een inhoudelijke evaluatie van wat daar wel en niet uit over te nemen valt. 1. Brainstorm liet geen artefact achter. De go heft de gate nu op voor precies een bestand: de beslis-samenvatting in docs/specs/. Plan leest dat bestand; zonder die stap bestaat de input van plan niet meer na een contextreset, een nieuwe sessie of een /worktree ertussen. 2. De scope-check in brainstorm zei "multiple independent parts are fine" en accepteerde dus wat plan daarna alsnog moest splitsen. Nu eerst decomponeren, in dezelfde vorm als plan stap 1. 3. Plan noemde worktree niet, terwijl die skill in deze branch staat en de uitvoering per taak commit. 4. Plan voerde uit in de sessie die het plan schreef - precies het faalpad waar de skill zelf tegen waarschuwt. Nu een verse subagent per taak, en de description dekt de uitvoering die de body al beschreef. 5. Beide skills eisen nu een todo per stap, zodat de gate en de self-review niet wegvallen op een onderwerp dat simpel voelt. 6. Brainstorm had geen ceda-metadata (validator: "nog niet gemigreerd") en geen allowed-tools. Ingevuld als ceda-origin: extended met upstream superpowers:brainstorming - de design-spec van deze PR noemt de skill zelf een bijna-kloon - maar zonder MIT-attributieregel, want de tekst is in huis geschreven en niet overgenomen. Bewust niet overgenomen, met de reden in de body van beide skills: de reviewer-subagent-prompts (upstream dispatcht ze zelf niet meer; hun SKILL.md noemt de self-review expliciet inline) en de visual companion (~1400 regels gebundelde node/bash-server; hoort bij de ontwerp-skills en vergt een eigen externe-skill-audit). Validator: brainstorm, plan en worktree groen, nul waarschuwingen; de collectie blijft op 12 fouten en 110 waarschuwingen, legacy 54 -> 53. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…commando Vier aanscherpingen op de vorige commit. - Geen docs/specs/? Brainstorm stelt nu voor die aan te maken, met het pad erbij, in plaats van terug te vallen op de chat. Zegt de gebruiker nee, dan noemt de skill wat dat kost: plan heeft geen input. - Stap 9 sluit af met het letterlijke commando, pad ingevuld, plus de vraag of hij het zal draaien. De overgang was eerder alleen een tabelregel. - Brainstorm krijgt de MIT-attributieregel, gelijk aan plan en worktree. De ruggengraat is die van upstream; dan hoort de bronvermelding erbij, ook al is de tekst in huis geschreven. - De uitleg over wat we niet overnemen is documentatie over skills, geen instructie aan het model, en verhuist daarom uit beide SKILL.md-bodies naar .claude/skills/README.md. Die README beschrijft de collectie, de drie gevendorde skills met hun upstream, en per niet-overgenomen onderdeel de reden: de reviewer-prompts, de visual companion, en executing-plans / subagent-driven-development. Hoort op termijn in docs/; dat staat er als slotregel bij. Validator: brainstorm en plan groen, collectie onveranderd op 63 skills, 12 fouten, 110 waarschuwingen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
De afsluiting bood aan /plan meteen te draaien. Dat slaat de test over waarvoor de samenvatting bestaat: het plan moet uit het bestand geschreven worden door een lezer zonder dit gesprek in context. Nu: /clear, daarna /plan <pad>, en geen aanbod om het hier te doen. Plan stap 1 dekt het geval dat iemand toch in dezelfde sessie blijft -- werk uit het bestand, zeg dat, en repareer het bestand als de chat iets heeft wat er niet in staat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
||
| # Brainstorm | ||
|
|
||
| Structured brainstorming from an idea to a tested decision, before any implementation or plan. The output is a decision summary with recommendations — never code, files, or commits. Respond to the user in Dutch, caveman-terse. |
| name: plan | ||
| description: Zet een genomen besluit om in een uitvoerbaar implementatieplan — bestandsindeling, taken met eigen testcyclus, exacte paden en commando's, een issue per taak — en voert dat plan daarna taak voor taak uit. Gebruik na een go, bij "maak een plan" of "hoe pakken we dit aan", of bij werk over meerdere stappen of bestanden. LET OP — vóór de go hoort `brainstorm`, niet dit. | ||
| allowed-tools: Read Write Edit Grep Glob Bash Task AskUserQuestion Skill | ||
| license: MIT — afgeleid van superpowers (© 2025 Jesse Vincent) |
There was a problem hiding this comment.
Licensing. What are the implications? Not for this PR, but for all CEDA code generated by the skill. Interesting.
Public Domain / Open Availability: Once merged upstream, anyone can use your code for commercial or non-commercial purposes, modify it, or sub-license it, provided they include the original MIT copyright notice.
|
|
||
| A plan needs a decision that has already been made. In order of preference: | ||
|
|
||
| 1. A brainstorm summary in `docs/specs/YYYY-MM-DD-<onderwerp>.md` — what `/brainstorm` leaves |
There was a problem hiding this comment.
English and Dutch. Should be OK. But does no harm to be specific
| @@ -1,6 +1,6 @@ | |||
| --- | |||
| name: init-repo | |||
There was a problem hiding this comment.
Think of the name space for all the skills. Perhaps one more level /:init-repo
In the /init-repo. Do you want to create rules for enforcing styling + accessibility rules,
create copyright‑safe boundaries that give you plausible deniability and protect the project.
There was a problem hiding this comment.
Hi @AlanBerg, I'm not sure I get this one. the init-repo is currently one skill, it could be extended or it could point to other skills. I think we will do both coming weeks/months.
But you stil lhave the skill name 'init-repo' and then a SKILL.md (folders with references etc could be added). We could also extend it to a plugin (then we would have more 'stuff'.
| Bestand: `werkafspraken/claude-md.md`, volgens `_template.md`. | ||
|
|
||
| - **Niveau: Experiment.** CLAUDE.md-tekst is advies, geen garantie: het model kan het missen. Dat hoort eerlijk in de afspraak te staan, en Experiment is het niveau dat daarbij past. | ||
| - **Eigenaar:** @CorneeldH. |
There was a problem hiding this comment.
Do you want to maintain yourself or make a group?
There was a problem hiding this comment.
The goal is to have more 'werkafspraken' public see: https://cedanl.github.io/.github/werkafspraken/
The skill's own rule is that it does not reconstruct the session mechanically. That section was the exception to it, and ceda-reflect now gives it a proper home: agent-observaties-*.md in the same data repo, same frontmatter keys, same commit SHAs, so the two join. Verified nothing is orphaned: cedanl/repo-context-as-data holds zero sessie-terugblik-*.md files. The question set is unchanged — all four questions intact. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Commit toegevoegd aan deze branch: Geen losse PR gemaakt — Waarom die sectie weg kan. De skill zegt zelf: "Wat deze skill niet doet: de sessie machinaal reconstrueren." Wat er níet verandert: de vragenset. Alle vier de vragen staan er ongewijzigd in — terugblikken zijn alleen vergelijkbaar over tijd als de vragen gelijk blijven. Gecontroleerd voor het schrappen: Concreet in
Context: |
Pull Request Description
Sluit de twee momenten in het werk die structureel gemist worden: aan het begin isolatie en nadenken vóór bouwen, aan het eind terugkijken in plaats van doorrollen met een volle context. En daartussen de keten zelf: brainstorm → spec-bestand → plan → uitvoering, zonder een schakel die alleen in de chat bestaat.
Base is
skills/lifecycle(#70), nietmain— deze PR bouwt daarop voort en is pas te mergen nadat #70 (en daarmee #68) geland is. De reden is hard: de baseline verwijst naarsessie-terugblik, en die skill bestaat alleen in #70.Uitvoering volgt het ontwerp, dat in deze PR meekomt. Stap 4 uit dat ontwerp zit hier bewust niet in — zie Additional Information.
Type of Change
Description of Changes
Twee nieuwe skills, gevendord uit superpowers
Beide MIT, © 2025 Jesse Vincent, met attributie in de skill. Vendoren en niet dedupliceren: superpowers is een persoonlijke plugin, geen org-tooling, dus het team kan er niet bij.
worktreesuperpowers:using-git-worktreesissue-<nr>-<slug>/fix-<slug>), projectsetup voor de uv/R/npm-stack, Nederlandse outputplansuperpowers:writing-plansdocs/plans/, leest de brainstorm-samenvatting uitdocs/specs/, en de taken landen via/write-issueop het CEDA-board in plaats van in een losse checklistVan
worktreeis de kern van het origineel intact gelaten: eerst detecteren of je al geïsoleerd zit, dán het native mechanisme, en pas als laatstegit worktree add. Die volgorde is niet cosmetisch —git worktree addgebruiken terwijl er een native tool is, levert worktrees op die de harness niet kent en niet opruimt. De submodule-guard hoort bij die detectie en niet erachteraan:GIT_DIR != GIT_COMMONis in een submodule óók waar.Uit
planzijn de superpowers-specifieke uitvoerskills weggelaten (subagent-driven-development,executing-plans). Die zijn hier niet beschikbaar, en een plan dat begint met een verwijzing naar een skill die niemand heeft, is een plan dat niemand kan uitvoeren. In plaats daarvan doetplanstap 8 de verkorte versie zelf: een verse subagent per taak, diff en test bekijken tussendoor.brainstorm: van eindstap naar sluitende ketenDe skill eindigde in een beslis-samenvatting en hield daar op. Bij een expliciete go is het vervolg nu
/plan, tenzij de diff in één zin te beschrijven is; dan bouwen zonder plan.Dat bleek niet genoeg. Een tweede ronde, na een expliciete vergelijking met
superpowers:brainstormingensuperpowers:writing-plans, sloot zes gaten:planeen besluit als input eist. Na een contextreset, een nieuwe sessie of een/worktreeertussen bestond die input niet meerdocs/specs/YYYY-MM-DD-<onderwerp>.md. Bestaat die map niet, dan stelt de skill voor 'm aan te maken.planstap 1 leest daar, met voorkeursvolgordeplandaarna alsnog moest splitsenplanstap 1: benoem de delen, de volgorde, en brainstorm het eerste deelplannoemdeworktreeniet, terwijl die skill in deze PR zit en de uitvoering per taak commit/worktreevóór het schrijvenplanvoerde uit in dezelfde sessie die het plan schreef — precies het faalpad waar de skill zelf tegen waarschuwtbrainstormhad geenceda-metadata(validator: "nog niet gemigreerd") en geenallowed-toolsceda-origin: extendedmet upstreamsuperpowers:brainstorming, plus de MIT-attributieregelDe overgang naar het plan stuurt expliciet naar een schone sessie:
/clear, daarna/plan <pad>. De skill biedt níet aan het zelf te draaien. Het plan moet uit het bestand geschreven worden door een lezer zonder het gesprek in context — dat is de toets of de samenvatting compleet is, en die toets sla je over door hier door te lopen.planstap 1 dekt het geval dat iemand tóch in dezelfde sessie blijft: werk uit het bestand, zeg dat, en repareer het bestand als de chat iets heeft wat er niet in staat..claude/skills/README.mdNieuw. De uitleg over wat we uit superpowers wél en niet overnemen stond eerst in de SKILL.md-bodies, maar dat is documentatie over skills en geen instructie aan het model. Nu bij elkaar: wat de collectie is, de validatorcommando's, de drie gevendorde skills met hun upstream, en per niet-overgenomen onderdeel de reden.
Drie dingen bewust níet overgenomen:
spec-document-reviewer-prompt.mdenplan-document-reviewer-prompt.mdwriting-planszegt expliciet "This is a checklist you run yourself — not a subagent dispatch". De bestanden komen uit een plan van januari 2026 en bleven liggen toen die review naar inline verhuisde. Onze self-review-stap ís die inline-versiebrainstormis een beslisskill, geen ontwerpskill; visuele keuzes horen bijui-designerenvormgever-npuls-huisstijl. Een meegeleverde HTTP/WebSocket-server is oppervlak 3 uitexterne-skill-auditen vergt een eigen audit plus grant, in een publieke repo. Upstream noemt hem zelf "still new and can be token-intensive"executing-plans/subagent-driven-developmentplanstap 8 doet de verkorte versie. Als de uitvoering complexer wordt dan die stap aankan, is dit het eerste dat alsnog moet komencedafy-claude-mdPast de baseline toe op een repo die al een
CLAUDE.mdheeft. Elk template-punt gaat in een van drie bakken:AskUserQuestion, drie opties, en bij "combineren" staat de voorgestelde tekst ín de optieTwijfelgeval telt als tegenstrijdig. Liever een vraag te veel dan een afspraak die stilzwijgend overschreven wordt — die regel staat er omdat iemand er een reden voor had die je van hieruit niet ziet.
De skill haalt het sjabloon via
gh apiuitcedanl/.github, niet uit een lokaal pad: hij draait per definitie in een andere repo.init-repohaakt aan hetzelfde sjablooninit-reposchreef zijn eigenCLAUDE.mdinline, mét modulekaart, architectuurbeschrijving en projectstructuur. Dat is nu een verwijzing naar het org-sjabloon, met de expliciete instructie die secties er niet aan toe te voegen. Reden: het bestand wordt élke sessie geladen, en te lang betekent half genegeerd.Descriptions die meegewijzigd zijn
Twee, allebei omdat de nieuwe skill anders de activatie van een bestaande verslechtert:
brainstorm— terugwijzende clause naarplan. Zonder deze wijziging meldt de collectie-brede validator terecht overlappende triggerwoorden (besluit,bestanden,brainstorm,plan,vóór) zonder exclusion-clause. De description noemt inmiddels ook het vastleggen van het besluit, maar zonder pad: mechaniek in een description verandert zonder dat de trigger verandert, en de validator vangt dat af.init-repo— terugwijzende clause naarcedafy-claude-md. Niet door de validator afgedwongen (de gedeelde woorden halen de drempel niet), wel de bedoeling: "maak deze repo CEDA-conform" moet niet op de scaffold-skill vallen.Related Issues
Refs #61 (skill-levensloop). Bouwt voort op #70 en #68.
Comparison: Before and After
Before:
brainstormeindigde in een besluit zonder route naar uitvoering, en zonder artefact: het besluit overleefde de sessie niet.brainstormaccepteerde een idee met meerdere onafhankelijke subsystemen, waarnaplanhet alsnog moest splitsen.init-reposchreef een eigen, uitgebreiderCLAUDE.md-sjabloon dat nergens anders bestond.After:
/worktreeen/planbestaan als CEDA-skills, komen door de validator, en zijn beschikbaar zonder persoonlijke plugins.brainstorm→ go → samenvatting indocs/specs/→/clear→/plan→ uitvoering per subagent is een gesloten keten waarin elke schakel een bestand leest in plaats van scrollback./cedafy-claude-mdbestaat; tegenstrijdigheden worden voorgelegd, repo-eigen secties blijven staan.init-repovoor nieuw,cedafy-claude-mdvoor bestaand..claude/skills/README.mdin plaats van in niemands hoofd.Testing Instructions
De eerste vijf geven exit 0 met nul waarschuwingen. De collectie-brede run staat op 63 skills, 12 fouten en 110 waarschuwingen — gelijk aan vóór de laatste drie commits — en noemt geen van de nieuwe skills. Dat laatste is de bruikbare toets, niet het totaal; zie de gotcha daarover in
create-skill. Het aantal niet-gemigreerde skills gaat van 54 naar 53:brainstormheeft nu eenceda-metadata-blok.Eerlijk over wat er níet getest is. Dit blijft de zwakke plek van deze PR. Er is geen RED-GREEN-ablation gedraaid zoals bij #70, en
cedafy-claude-mdis nog op geen enkele echte repo losgelaten. De validator zegt dat de skills spec-conform zijn, niet dat ze werken. Handmatig na te lopen:/worktreein een repo die al in een worktree zit → hoort stap 1 te melden en niets te maken./planzonder voorafgaand besluit → hoort terug te verwijzen naar/brainstorm./brainstormin een repo zonderdocs/specs/→ hoort voor te stellen die map aan te maken, niet stilletjes terug te vallen op de chat./brainstormop een idee met drie onafhankelijke delen → hoort te decomponeren vóór de eerste verdiepende vraag./cedafy-claude-mdop een repo met eenCLAUDE.mddie "werk gewoon op main" zegt → hoort dat als tegenstrijdig voor te leggen, niet te overschrijven. Dit is het DoD-criterium uit het ontwerp en het is nog niet afgevinkt.Validation
validate-skill.pygroen op alle gewijzigde/nieuwe skillsbrainstorm,planenworktreestyler::style_active_file()— n.v.t., geen R in deze PRcedafy-claude-mdgedraaid op een echte repo mét eigenCLAUDE.md— nog niet gedaanbrainstorm → /clear → planéén keer end-to-end gelopen op echt werk — nog niet gedaanDependencies
Geen nieuwe pakketten. Wel twee inhoudelijke afhankelijkheden:
sessie-terugblikbestaat alleen daar.werkafspraken/_claude-md-template.mdbestaat nog niet.cedafy-claude-mdeninit-repoverwijzen er allebei naar. Zie hieronder.Additional Information
Stap 4 uit het ontwerp zit hier niet in, en dat is een keuze
Het ontwerp noemt als stap 4: het sjabloon, de werkafspraak, de regel in
werkafspraken/README.md, demkdocs.yml-nav en de mirror onderdocs/werkafspraken/. Die mapwerkafspraken/bestaat alleen op branchdocs/werkafspraken(#69) — niet opmain, niet opskills/lifecycle. Die afhankelijkheid stond niet in het ontwerp.Alternatief was #69 hier in mergen en er één PR van maken. Bewust niet gedaan: dan bevat deze PR ook de diff van #69 en wordt de review troebel. Stap 4 komt in een vervolg-PR bovenop #69.
Consequentie, expliciet: tot dat moment verwijzen
cedafy-claude-mdeninit-reponaar een sjabloonbestand dat nog niet bestaat. Beide falen dan op degh api-stap. Deze PR is dus pas functioneel compleet ná de vervolg-PR.brainstormopextendedin plaats vanown— een oordeel om te wegenDe tekst van
brainstormis in huis geschreven (commit19d7e2f, vóór het vendoren van superpowers) en is geen kopie. Maar de ruggengraat is die van upstream — hard gate, "te simpel bestaat niet", 2-3 aanpakken, in delen presenteren, self-review, doorgeven aan het plan — en het ontwerp in deze PR noemt de skill zelf een "bijna-kloon". Daaromceda-origin: extendedmetceda-upstream, plus de MIT-attributieregel dieplanenworktreeook dragen: verandert upstream die ruggengraat, dan is dat hier het lezen waard.Het alternatief (
own+ceda-source: self) is verdedigbaar en kost één edit. Wie dat vindt, zegt het in de review..claude/skills/README.mdstaat op de verkeerde plek, tijdelijkDocumentatie over de collectie hoort in
docs/en in de mkdocs-nav, niet in.claude/. Hij staat nu naast de skills omdat de collectie zelf nog geen plek in de navigatie heeft. Die slotregel staat in het bestand zelf, zodat de verhuizing niet vergeten wordt.Branchnaming in
worktreewijkt af van wat deze repo doetDe skill schrijft
issue-<nr>-<slug>enfix-<slug>voor, conform het ontwerp. De branches in deze repo heten in de praktijkskills/lifecycle,docs/werkafspraken,skills/ontology-create-skill-v2— een onderwerp-prefix, geen issuenummer. Er is geen vastgelegde conventie die dit beslecht. Ik heb het ontwerp gevolgd; als de praktijk de conventie hoort te zijn, is dat een wijziging aan één tabel inworktree.Checklist