From 01bc7147c930ace0e24a9a1b81b130a9d1081a36 Mon Sep 17 00:00:00 2001 From: vitya Date: Sun, 24 May 2026 23:10:03 +0300 Subject: [PATCH] feat(project-bootstrap): canonical template + Step 5.6 add session-handoff trigger [v1.12.0] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CLAUDE.md.template gains `session handoff: read on start, write on end` between `pull remote before work` and `follow project discipline` (session-lifecycle clustering). Step 5.6 trigger->fulfiller table gains the corresponding row (template ↔ table source-of-truth invariant). Greenfield-bootstrap'ed projects now ship handoff trigger из коробки. Existing projects unaffected — CLAUDE.md merge in Step 5 is idempotent and respects user removals. Bump 1.11.0 -> 1.12.0 MINOR (new canonical trigger = new capability, backward-compatible). dist/project-bootstrap.skill rebuilt. Closes [session-handoff-bootstrap-template-extend]. Unblocks [session-handoff-existing-projects-upgrade] Path B. Co-Authored-By: Claude Opus 4.7 (1M context) --- .tasks/STATUS.md | 17 ++++----- ...ssion-handoff-bootstrap-template-extend.md | 34 ++++++++++++++++++ dist/project-bootstrap.skill | Bin 12138 -> 13114 bytes skills/project-bootstrap/SKILL.md | 3 +- .../assets/CLAUDE.md.template | 1 + 5 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 .tasks/session-handoff-bootstrap-template-extend.md diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 239d389..d424562 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,5 +1,5 @@ # Task Board -_Updated: 2026-05-24 (session-handoff-install закрыт 🟢 — fix description YAML `: ` ambiguity, bump 0.2.0→0.2.1, reinstall, listing рендерит полный description.)_ +_Updated: 2026-05-24 (session-handoff кластер: install + bootstrap-template-extend 🟢; project-bootstrap 1.11→1.12.)_ + --- diff --git a/.tasks/session-handoff-bootstrap-template-extend.md b/.tasks/session-handoff-bootstrap-template-extend.md new file mode 100644 index 0000000..2c24514 --- /dev/null +++ b/.tasks/session-handoff-bootstrap-template-extend.md @@ -0,0 +1,34 @@ +# session-handoff-bootstrap-template-extend + +## Goal +Расширить canonical CLAUDE.md template в `project-bootstrap` новой trigger-строкой `session handoff: read on start, write on end` — чтобы greenfield-bootstrap'ed проекты получали handoff из коробки. Также добавить соответствующий row в Step 5.6 trigger→fulfiller table (source-of-truth invariant: template ↔ table в одном commit'е). Bump project-bootstrap MINOR (new template entry = new capability, backward-compatible). + +## Key files +- `skills/project-bootstrap/assets/CLAUDE.md.template:10` — добавлен `session handoff: read on start, write on end` между `pull remote before work` и `follow project discipline` (session-lifecycle clustering) +- `skills/project-bootstrap/SKILL.md:3` — bump `version: 1.11.0` → `1.12.0` +- `skills/project-bootstrap/SKILL.md:492` — новый row в Step 5.6 trigger→fulfiller table + +## Decisions log +- 2026-05-24: позиция trigger-строки — после `pull remote before work` (тоже session-start hook), перед `follow project discipline`. Session-lifecycle triggers группируются вместе. +- 2026-05-24: bump MINOR (1.11.0 → 1.12.0) — добавление trigger-строки в canonical template = новая capability для greenfield bootstrap'а, существующие проекты не ломаются (CLAUDE.md merge — idempotent + respects user removals per Step 5.6 Algorithm). +- 2026-05-24: rebuild `dist/project-bootstrap.skill` через `scripts/build.ps1 -Names project-bootstrap` — обязательно, иначе deploy на других машинах через `.skill` archive получит stale template. +- 2026-05-24: reinstall в `~/.claude/skills/project-bootstrap/` через `scripts/install.ps1 -Names project-bootstrap`. + +## Open questions +- [ ] нет + +## Completed steps +- [x] edit `assets/CLAUDE.md.template` — insert trigger line +- [x] edit `SKILL.md` frontmatter — bump 1.11.0 → 1.12.0 +- [x] edit `SKILL.md` Step 5.6 — add row to trigger→fulfiller table +- [x] `scripts\build.ps1 -Names project-bootstrap` → `dist/project-bootstrap.skill` rebuilt +- [x] `scripts\install.ps1 -Names project-bootstrap` +- [x] verify `~/.claude/skills/project-bootstrap/SKILL.md` v1.12.0 on disk +- [x] verify template contains новой строки + table row at SKILL.md:492 +- [x] STATUS.md → 🟢 +- [ ] commit (next) + +## Notes +Unblocks `[session-handoff-existing-projects-upgrade]` Path B (project-bootstrap в upgrade-режиме теперь видит handoff trigger как canonical). + +Этот edit — следствие user'ского напоминания из брейнсторма 2026-05-24 «не забудь, что нужно будет обновить project bootstrap». diff --git a/dist/project-bootstrap.skill b/dist/project-bootstrap.skill index c725bc6a67052471cdcf782af15673368c338599..517df50e79330ed15d502d4f29f90b7d489ffdf4 100644 GIT binary patch delta 10417 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 CAs&(d delta 9447 zcmZX4RZtuZtS;_W+$nC0TXA=HE$*_o%i<2j-QC@bTUi{oxVu}C0!7Y$pU&KS^OQ`! znIvEGkjbRS`rNoF02w3Iw9+Ws!u3##3JU7rdul8)B`Cl!l|qA0?}z z><(#Pts*x~8q?WYvve)VvZP1N_P0kdN{u2P2T=9dY(*SsO751XAX~$c|S{pwYnDR90CPSk(F+C~d%evET8EHm%xFC?7t*rkh5OZ-`$8cW5 zTB_`l4NB8CIOK8{;{O02e$%7THmb-qDA>Y`_sy&HB(^$pPMO3lx8psr3YVdC3(Mx_ zdt~Bp)y$AL&b3NrNpZ8Dh4?wrJqrrY#c>klX8s@-3V5|`F^=cBJY?#VtE{MAeA|4Z zV&YTpTi>pp7O2)8gCV=9>Zz(Atml5SW#4#)0VVu8J_Ls~Qn-=2r!O;WelOFHEQH*< z*I9)&t4`9?aEx*46L^|`2-T+|neax${E4XU@HOfN>rxsMW`B!qhUvfPRZ0oSrdum< z8m1g*zy@&EUv4z$#IW{Mrz~nMbZ~~X(WYJS6XuF5+67go^sIRdm~V!ZSMJanxL6TX zgZ=^1lCC|qmV*@IZLlwQ@ik$IauX7Xre2i`jC>QCI{@}>b*(AcvL~B>%kMPko-5&E zy6VR6piFcfCQUkcW5$q|{>`!};Nt+WWapIq)9zpvaUJjuzji)GpFlP$>0k8I;vSL4(Q$;seH4wVg-@^HTy z5jNY}Zy?vp|0<>a*-hH(1l(cIfy?+WK15(Gt1ye=^U3>|G9zxqJxAQ7MPVNmbZa2h zV@4iVpKMn1J=w5~)(`K<3m@+O?9BHUH$@(=E(snkh_e2?Wa7g~p zW32gym+oyysmCnkv0}SLk}p~Wv_Cl1NoQ0=&avYi_#AjL_9wb=iJVF`h`_fAB3rno zqNsY}^KOpx+uS?-$!w!_$uCG1c|yBmb5(F{-U4j>^qn7ZG#^taSgFbzleUPA6i(5S$dDi32(Io z6FnG+`#);WHKU<&5yAb)Y+)r7h&L5T?YQNR;~r$|L3+sYcF50_PPVmKb0k`Gn`i+n zS0IRU1?5UgNoZ{s8^`8;mg~^ZZi<372Vq zq6It?!1Rsgvbcl)HB;M3{zLKhEL8BiEGL?Pw=GKHh%y`oG%-B<6&f=@fI}78a<;A{ z5Jn#?&0;npeLlPsKchN4H*Vd&1@)o5cuB<{H#4$79vfF|$t*}VD}mpS*jzW}aXnIjhpe7MJqqN%O3y4{O&CdZHw zmkrLICN}*6LXB?e)t4MPGaAQIQdop}D1dP)CqixJu^?$na}!I#ratfXJ|Tg|sEMMI|Mc=yyk z?ARIxp?$pmgyy^bIdu6`Br1T95X85dc1C*~Zjz~{gIr*WJm#>D^!L)a?obqQY{(1U zQA2f`+2ErL5a(u2F3_!J_s(w$CG;Z}N{d|Vh!y(|m9(IVX%{+=wsw{OxMJw|Z(YW} zFIND+N86{pmC7H+D*m;lP8yf~Ix;T#O3%ORK&2>6O5}gw=^Qupo(S|$GNbAdrqvym z$JZ&c=q69k>oonoPvuP5h$DM$kJfcYhOzM+!=_k~l`r$fokqW~hO&y$uW;phFWCx& zW9vcuTZy6|5&7RO76)1Fv!NDQP5IoKPK4=i3x@mHoc&!8Fd4i4%9mgLWtlH|qBW_1ntnbB>9G5h=Qbb)4i2z#OM~mrv-OuAD{_=8-(((}>}QKcS0Jbxz*jK6cWGe( zi|G3UWG+$kWzB|yzVQ9B_2BvW8FDa(54I@;$V#+z!}WU@FRM4#t+-Qd7E*j(i{_#j z{Y(^q(aoh%$+QDBQ#HJ$*nZgug-}8rr1159u|#56Vql)__Q3YS5wFkLTU-7;|4Hp< z0f*JHhpjXGO{

tM7H>EO=NlPHh6+OQtqEL@e;%%`JVvD|f*2t-r_sFB-FX7EGye z1vs5A1Au-5jcvqp!GOt#x}d)--+mGPVdcSt_jT7-Ym5CYJvXmmMR|r2B%<4om(|U% z9~n}rAO#(kWZ;>j1^GxhyjxzdPQ}edBQrU zS8S907KyxvmKfX^5_O&IstueQYUbVb|LEb$2n;Y(J#rZ+eJE=@GqV5Fan1U)p)eZK zES1|om^+L{nk-KPM2>d=MXviQowSEngmzS?w@0jNnSQw<`i<#9ur1DNICMwb8Og21 z^P#9vsrVDAD6G+txt^fyQTn6%oo;CR6b6X*GAxj;<&FD!9jSVJrKhlZ%J#r^WLai+;!$Z!Yr*nnd*x_5Gt|6N=b$ z_=09|wNqz#x<62|AfV*L&Tma(NKmx}+1kn_oE1uvrSZyUO_|(?WNv1C?#J7Jo3EJ7 zq8y1<3ArK3@nyCnmNh7A`iRM5W>;To-Nil{(7vW4ZN}pw`+|VQ9%T!~6+iDIJ9&H9 zTXmqVC4ZyS)aI=OGCeLh1NNNl?nvV}9K+s(-_i(#r?Qh3)9X>?_InI{H8U~ODGC*# zA31(Bcp`o!Y^^Z!aI$f4$C$Tl?1r><_s(eMzDm@x=QDOG5Xe^=TA>z5i`kt>e9X3* zf8Hg!$0;Ll*Ks~8$EW9}I>q$Ccb39?7YwTf0;|w1D{;L+<~*yKN<%Uw0|Jq$XDrI} zcTHGQ=Noj=?j|XLrv=xSB1gpiVr}w0>?TIsDL)23-7E9KKJl;RgNIkM$eSdZe(5-i z<_SZ2w=T~Q=>Cbe4BIe@PJ`<<;3n72 zu5g%@_&R;e5ry^4@TyI*DA|#0SoA8bW-?1!gUkDK z??FSXXx+Mw*Rau>BhwOVlxz^+9nTgbYPa)vjqGJm5&?7m8_jqkh3)mTb2fk)A@XI- zj${I$WUWsd{uQmd7V-l*@bA^&GtFQ?QRd#z&O3PXUbeqammn^BJY?GS(?6!8#0jx_ zNdfhMogRQwMG6!EM(>JRpIptnT6rwFZY?ZWM7^A*F90OJsAVa&$T_5c zGpme7AZ$T$muN4_iy&f7Dc_HteiJbot^zVuS%CT9=Gh(RRbT0x3Cn{qMziAI9Yk7E zg6Qm@b(%tw&{2o*fyB1W%M@W2x#L9Dnwp?@lrMKjVk*jujTL>VM&)`D$~%I-+Yb>8mjey;yQO)n~qzDln8IL5{Onc|-$8*l3-M z3KV}w;4{{-b10AZ@IdQr{8Huvqoi2JB~zj3XiBe%~xECBvJY?|v0rk;5Yk86bDd=8P7l z!^$wxAe%QM+4PeDo~6Rz4N6@U+r-E=yfF#dLSVMQRtS>?{eHLS7n&K$q$uQX&|&a> zYQgz0K)^2Vj!7~yUn`sjb*sJUQ6Px)@w)xysJirh^IArc6$;cL%v|DT7L!^RXHuym z^Lg}l;9uq0z}v^)Pxkk_fe+Q7XW6&MpCIyV;Fyox@3MH9Kv(|_i+fW?!~4UX#+~KVk8I$@+_eq z`SnRTTZ`sdDV^!UN6g- zY)Da%sWy#%yGl`~7$vJp#VY8SoaORzbwUTTd0qOMSOVs8sClhH+3?;;+=JXTG1B_T z3Ohr&0oZ^7kfZD9?5jnQWskSc>H;EQ3>obm)R(rf>n*O`e!%7NF5~F?TR0D#|=1h^#RP_6a zop6SqDj%R$y6Udx$r1tQNomKyU@|ETUfIEXT71dzVy+?wq{i4FYU4MKPj-lMtIP0- z!Q@I?#|20srXxcfFV)h3V!0>l+`dM9%Z!~KK6`9Q9^VGtqcXNkn)~If<(wPH%zer& zjBG6bI=J|#Cmfe_NrJG3^cNikIez?%Wg>G*Jx0rwa>>jr5x4;I5%SqjDyz!_Iue{l z826}_#|o&b^2ls1hM7NK%uV}aG$JwKZ~3uS z`8s*=rQT@4)vDdp4d7{&R8#f7XQA#CGQ#zm9vxYTQET~XLnsX4S>!TC%u|P1UAnVQ zji5iVamiHW1?+OBmi+AVuP2{PUO8~XPt9Lay z?0K67*_?~8V>*J(Gm&$$WPhjCVC%P@wnY`)ZBCgnz@fqf^ojjLJ#IFim=TzSbs-p} zLFz2ds5$(3Z)zKT6oOk^!ed%iwP%ki*p9(%M=@rl4$>yp>a5;0m1HpGN=&4V{X;cR zXnI0buAK*zid!`~AES!zw!wm!?m;U~;F(I7m)MhK2Uo;KLKE6h{tKT|ZmJyCKSznl@quqdd+!yu{(pvQD-ybWnH{z?Zp6J zQrkgAEJW$Rh8I&b^2n+3aK&S(3~dd0pg5{4h;~88hkLB5E(9YhQ!#oarU(~?( zq%Gx0%uOQai(T(TM(v#>4PP8A&@-{yo_^Y^p|NisaT)3L<($e{*<>(ZP;PVi*8(;R zsCp+)0rVVQ=uaDOj#nQlUt47Ekp_GT%~J71NeXG>bFq?E)N7{>a49|fuPol0gU$;M ziA$j;+P2d~hDG>VYil1N`<)g2!|FBp6gWu7?l$~ubB)z+%XV}o59U zPp_(~(?r;2;_%jP8CSIszhXDtx3?3AmwC6e6xB?EZXXZPQmcZ;&0AMNvWQUe+U(tq zsl{;o{pnosCt=*o>%3DAjwWn9%Jzb!L^fHOE>F7 z?=wpxj&T2ImAUPkUaIiZ?1AM%H*=zmMqE|5ZuR)FGPeRNoi0o zRP!yjpKVjv31FNwJSOL;Sr7nSI|YO39jmhGk@eQUob4)G2`m(h5WW z9?{=#zdi5{x{@d~U3vf38iysL=d{pCu#p~Z5kv9>KpP?neqB2_bLU|pu769|M_iB} zYWkfbeSarQoJFeXyyj!^5bwxviGApsG?L83Yv)KPoj4&jAl(1& z?DK_)pG8n$y?(0}93=D$?li6$*nom@UYvi)Rljg)Ixnx?`q5P6RnhB>dM=u`)Zc-j&pz83nXH8-G zR%rjcE4IY|TD5(iZuO7Tq6vS#?%WS@>^24$(A-9jtjP27V!B_rUvJ zAO?hapZ4%+_%PX=U;WJlpOJu^zmV11!96g9@N@yzXV$fnWA`$D=0g|l4+}HSti*4$u8%r;MkKDfXN=?JU2-Sp z*Ok1@2Vb(jAA6@x)c(ve&HqCa_N-|$^U`f8b`^qyOeN?Jr2d*Wb;d?6>boEM=EQW#6(3=LD#^Q6oRzaLYFLFuEDn4iOxkp`Azl?O~qSe6XyyxAo-iS7coxVbV>sWTN zeg$6-x*5Axr9G(LtRZiCpU7hN(tTTUTAWtebDHwMj;*4fr()Sqrn|~dr#uorcc8xE zS~<>K_U-0nL)L2yb5Lq|$3#EzN6l%a8mdPw3>gOPF)g(OQGb7XT?#U+m)V#J_sw@? zt>00^tRcJhLK1!O{~I{13_a8LXtI{G5yTfoEnIh0_094*xQsN8*~aN!4slC7JqnQ} z24^`YcScs24~Pl)zTqa6nO_`X8r-(5ITO_(7mRQ(G^-+)2;u!5fG%@*HrUJ{i9FRL za=HcLR`I5pB+#L>L5<1jMNhrbvDkocDldJ}X7V}PUQ8I0qdp=2Yd*egEQXfzMiuqk z(KY6~=bFrOk+&YBI)_{pQ(CK)KAi~jQO&Tc>EK9Y5Q%KLf9p4u4N%wU{NX5 z(lIwB*0Dy(Z+iVyrTq1Z{)XFtOirrH1=F2le`MZaW zi5Rb#KiDs=IUg_6p$DXvv%bGEB=|rcAi6U&-!ayP*Sqor4v(6*)X}6b$f&yERqT`z z&7>ajjba0qJFQ%AO>B^?^u4?6PvpuvRPOM8G2H!g&E-n%&eT~J*x)?zr#BEJ(}!`x z)w;!p{MN;&>=r1w`_b`2c6tlE7ks0ey~((JPuM-nK)!AV{dytu`@z>2w0i5um*}&R z_LgzOo1NdxpV0XW6BGJpCr6Ics|a8@Vb*R7%elLMXl=kr22r4QqZeZ!rgg*nrSjkP zZHRgG1*~iEMnym5d8?xD6Tu&}$t%d#^taY?pb326_$K*H%C%V170w8YRacBXr;B^fnNX={dJMK z=_PLji(MgTV~;6h#noRJ6Q=^eGWmdytZPqsWTXn8LgSPj%1m)TR0I!NUm&8hXdGQ< zE7+H+=^(Xdn3ugxJQg$x+yz3D+WwPTrb#8(#x!b9fh&owmXpz-i*Htpp!;4<^~+3) z)_A~tVp(u4Gz~UyB3U0rjTJ5smUSJ61W4$2pm9voF733Ji_!a&*+S6;-SyRWN~e8> zO~ZJds!oKUjy@vspN0!a6=h5Km_X#MgfDhDW@Mxny-AOvoVl;%G(xW$tZ#OJ1$jf| z`u#fUnU+kW_h^zQ0vdlO)gv(7tqD5xpd2k%hgRdk&rCC5@o>VNM=tprod%f2sTRnM z*V8$Q?b4bTa5VXAgz5OAJp=>Q4Y0uPO6f)nB`c$uHa1##q22`1JK3Ra83_A5?|g(o zCED-sSUwdSRPY8h-k&Z0RuR&}9_%>=R?H&euhjYH2MIhXf`bI?=z|RE3~#)hj{|qW zc$*MUn|B<)6Zni;wx$oQtsbp$@9L+O&zsM`pYJB0U@=L9$GIxqbNJ#VH$|0Jm$*%O zNvmIh?SCFN^;1ClcTT9d?u{4vnj1(uih}aM)zGp2A8W7eI(CBpHXCozXskZy!2;dNH|}^q+3~s ztvOY*luCD)y*;GYY?o&#w_M*7Z+4y`TmSyC1%A~=Za4zT8n8R#jU%~TsY2z>GQ6$w z(Wk??8D6#W`h^rWb4ozo>#80dj~5mosRYI2hZ5v%-XZ3UC>`Hs@Gm}*F;z)JZ+bmk z5El~!xXzBEKs?^+J-jWn0%UCIIK9VroN5VRIWq%0^^&Q(1n8uSS#tJn{z+`#=15Pg> z?fRCiDbHH6BKGhBY1H{-|5j^RuFEh#D>ZMzI1pa5CW_gsri9dBq$1z?a?#3ZQfeA5 zDE+h;|Nb_<3qM$Hb_@K?fw8PevnjaXb}>IkfCMytj~r8bv;cckK9&m&;pFN=_YMbsI?}e> zCW9=AI@2kt{pQ7NZ@hkfq&+BT>rO1`L*Fp!{s3mLwjP&YXV&>g@E zjKrIyO~guXxd~5=U<+69>QaZ~>ZPwwcQ3=d;EVNf!Q#P1rs_4tZe`&Mz|{HJ3Z#Ah zK^qjXX4r5AQG7MFudh{2-A*6i?M$ZEb<*41!mz<1Gn%T$8%XV&da)K)*?8M{GGN=j zZ#O1*;Z~fh=rcPUX2Zu+=2w2k976BBeJ7E@mH6ajgdBCukpOJF+%EEbYoD!%W8jZt z!ddU6TpXQKTh4fz&Jd5WoDQ9ZL6hU~!j)6`wV+LY*Qdp!Yq*tZV}pO!7ipC1C;LH< zX?2%N!z{X#(&iUKbZk)uEGH!MIFYT+O$Xl9=<#$Ttwr{TD?n0k6VLAp;A%VxIjOKP{P>JB5!3%$YI+iFnxNc{PSPDD)1P?Y7%WUlCN+^(^K_71%`Il4IDZ6{T6 z$!;c5(@kX|a$P|NaO zVW_S{&fvGJ{fwA8R3w3DrjFVrFuVFhX!Kec$x;Td8Il#g^zINyX0OL58=8Q=mq?Ce z)|7U;YvB7vV!0@FvAx^goVSyjRIG+Z#5}uTLg-I&(le~rbYon=i#RkogLA|;u{nnz z;%v6N_TDwZ_c$#%f|I(-q5c2<8%c5seEq+>2?YiCkCp$G59U-%HrCWBPPDK8A8r4O Z`cJz6{0AiYk45ZM8ZImZEY|XNwEL` diff --git a/skills/project-bootstrap/SKILL.md b/skills/project-bootstrap/SKILL.md index f4a605f..b6d117c 100644 --- a/skills/project-bootstrap/SKILL.md +++ b/skills/project-bootstrap/SKILL.md @@ -1,6 +1,6 @@ --- name: project-bootstrap -version: 1.11.0 +version: 1.12.0 description: > Initializes or upgrades a project in the current folder: git, .gitignore, README.md, .wiki/ using Karpathy's method, .tasks/ for task tracking, CLAUDE.md with skill triggers. @@ -489,6 +489,7 @@ Mismatch between template and map → silent gaps in the recommendation. | `use task management system` | `using-tasks` | skill | `~/.claude/skills/using-tasks/SKILL.md` | `bash scripts/install.sh using-tasks` | | `check across all projects` | `using-projects-meta` | skill | `~/.claude/skills/using-projects-meta/SKILL.md` | `bash scripts/install.sh using-projects-meta` | | `pull remote before work` | `pulling-before-work` | skill | `~/.claude/skills/pulling-before-work/SKILL.md` | `bash scripts/install.sh pulling-before-work` | +| `session handoff: read on start, write on end` | `session-handoff` | skill | `~/.claude/skills/session-handoff/SKILL.md` | `bash scripts/install.sh session-handoff` | | `follow project discipline` | `project-discipline` | skill | `~/.claude/skills/project-discipline/SKILL.md` | `bash scripts/install.sh project-discipline` | | `follow tdd-criteria` | `tdd-criteria` | skill | `~/.claude/skills/tdd-criteria/SKILL.md` | `bash scripts/install.sh tdd-criteria` | | `delegate to interns when allowed` | `using-interns` | skill | `~/.claude/skills/using-interns/SKILL.md` | `bash scripts/install.sh using-interns` | diff --git a/skills/project-bootstrap/assets/CLAUDE.md.template b/skills/project-bootstrap/assets/CLAUDE.md.template index 829cbb7..ee458ee 100644 --- a/skills/project-bootstrap/assets/CLAUDE.md.template +++ b/skills/project-bootstrap/assets/CLAUDE.md.template @@ -7,6 +7,7 @@ use project wiki use task management system check across all projects pull remote before work +session handoff: read on start, write on end follow project discipline follow tdd-criteria delegate to interns when allowed