@organizaone/o1-code 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/commit/SKILL.md +1 -1
- package/bundled/debugging/SKILL.md +58 -0
- package/bundled/debugging/references/root-cause-tracing.md +37 -0
- package/bundled/design/SKILL.md +65 -0
- package/bundled/execute-plan/SKILL.md +51 -0
- package/bundled/extension-creator/SKILL.md +1 -1
- package/bundled/finish/SKILL.md +1 -1
- package/bundled/goal-draft/SKILL.md +1 -1
- package/bundled/new-app/SKILL.md +2 -0
- package/bundled/review/SKILL.md +1 -1
- package/bundled/tdd/SKILL.md +56 -0
- package/bundled/tdd/references/good-tests.md +37 -0
- package/bundled/write-plan/SKILL.md +66 -0
- package/chunks/{MaxSizedBox-5SCM5KM2.js → MaxSizedBox-GF25YEIN.js} +21 -21
- package/chunks/{StandaloneSessionPicker-AJJBYDA3.js → StandaloneSessionPicker-YBS47NTB.js} +34 -34
- package/chunks/{acp-subagent-executor-K3G5OOSP.js → acp-subagent-executor-OCP4NXXX.js} +24 -24
- package/chunks/{acpAgent-DKLAK5PM.js → acpAgent-WMX43ZDF.js} +61 -61
- package/chunks/{agent-6OWW6WY2.js → agent-NMLVWIU3.js} +11 -11
- package/chunks/{agent-headless-YPSZDZPG.js → agent-headless-5AKJIKG2.js} +11 -11
- package/chunks/{anthropicContentGenerator-3IK5TV3K.js → anthropicContentGenerator-5OH4LNCZ.js} +4 -4
- package/chunks/{askUserQuestion-3IDRGYW3.js → askUserQuestion-LD66OM5J.js} +1 -1
- package/chunks/{bridge-ZX33T7DG.js → bridge-DTVVZPYE.js} +24 -24
- package/chunks/{chunk-YEOU65NW.js → chunk-2S34HMND.js} +1 -1
- package/chunks/{chunk-HWG2ZXRT.js → chunk-2X5ECQ5K.js} +5 -5
- package/chunks/{chunk-VGR4BKLQ.js → chunk-3CO4GKLV.js} +1 -1
- package/chunks/{chunk-Q5D3WECC.js → chunk-3YCUO772.js} +1 -1
- package/chunks/{chunk-46QWU5NF.js → chunk-4JQ6AGCG.js} +1 -1
- package/chunks/{chunk-RQOEQ73K.js → chunk-4NV74I76.js} +1 -1
- package/chunks/{chunk-D3VJGSXW.js → chunk-5BGVEQ5T.js} +6 -6
- package/chunks/{chunk-XMBUOPZG.js → chunk-5ITAMZY3.js} +7 -7
- package/chunks/{chunk-OMKGBEIH.js → chunk-5ST67IZT.js} +3 -3
- package/chunks/{chunk-ATR7W3VI.js → chunk-623SEN5Q.js} +1 -1
- package/chunks/{chunk-L65YOA4P.js → chunk-7J3ZEJUN.js} +2 -2
- package/chunks/{chunk-J4WTP4LX.js → chunk-7OHUVM2P.js} +3 -3
- package/chunks/{chunk-TQO7BXBQ.js → chunk-AE25P7KP.js} +5 -5
- package/chunks/{chunk-K7L7Z5JJ.js → chunk-AG2ELNEP.js} +9 -9
- package/chunks/{chunk-QHQFX3P5.js → chunk-B6W2OL2D.js} +30 -30
- package/chunks/{chunk-HWTDN2JB.js → chunk-BDKFE7EF.js} +1 -1
- package/chunks/{chunk-5VYJVTAM.js → chunk-BDKGHKN5.js} +1 -1
- package/chunks/{chunk-4OKN67QV.js → chunk-C6LFEUFU.js} +1 -1
- package/chunks/{chunk-VIYT2NE4.js → chunk-C6U74Q6C.js} +3 -3
- package/chunks/{chunk-WRQYAWUW.js → chunk-CCNABFR3.js} +3 -3
- package/chunks/{chunk-T6BNDNKW.js → chunk-COABCWBY.js} +5 -3
- package/chunks/{chunk-7RYHVZAS.js → chunk-CTIEFYP7.js} +2 -2
- package/chunks/{chunk-2KFLZ6RD.js → chunk-D4RCT4J4.js} +2 -2
- package/chunks/{chunk-54A4EPMP.js → chunk-DB5UA5RL.js} +5 -5
- package/chunks/{chunk-TLHPWOSA.js → chunk-DBD424KY.js} +2 -2
- package/chunks/{chunk-Z4H2RDAF.js → chunk-EGZKXA6V.js} +1 -1
- package/chunks/{chunk-2HHPWUTH.js → chunk-ELIXZXZC.js} +4 -4
- package/chunks/{chunk-53EO7S4Y.js → chunk-ERJWPEY7.js} +3 -3
- package/chunks/{chunk-IBPA7P2S.js → chunk-ERV4L76G.js} +12 -12
- package/chunks/{chunk-YS57I3OQ.js → chunk-FJKGFWXG.js} +3 -3
- package/chunks/{chunk-7JU2ULBO.js → chunk-FWXUI7DZ.js} +6 -6
- package/chunks/{chunk-X2HM423P.js → chunk-G4NGNKM6.js} +3 -3
- package/chunks/{chunk-V5YZXZMM.js → chunk-GFZWLC66.js} +10 -3
- package/chunks/{chunk-XKPECZJM.js → chunk-GZNQS5UB.js} +1 -1
- package/chunks/{chunk-WYUR66BU.js → chunk-HEXJ5CP4.js} +7 -7
- package/chunks/{chunk-PS7DDP2Q.js → chunk-HKGC5GVY.js} +1 -1
- package/chunks/{chunk-QIZ34JTV.js → chunk-I3G7XU6U.js} +4 -4
- package/chunks/{chunk-NVKVO57S.js → chunk-IFBW6FYH.js} +1 -1
- package/chunks/{chunk-XAA77MEC.js → chunk-IVAO4HY7.js} +3 -3
- package/chunks/{chunk-7GTL3WHO.js → chunk-J7G3OJOX.js} +9 -9
- package/chunks/{chunk-GY77YVM3.js → chunk-JBMSEZDI.js} +4 -4
- package/chunks/{chunk-4QRR663K.js → chunk-JDUBQ632.js} +1 -1
- package/chunks/{chunk-35HKXSBC.js → chunk-JE64TPWB.js} +4 -4
- package/chunks/{chunk-H76MQGWH.js → chunk-JEX5DADO.js} +1 -1
- package/chunks/{chunk-S64M5W2S.js → chunk-JHODAWQZ.js} +10 -10
- package/chunks/{chunk-677NF5JH.js → chunk-JR2IXLNE.js} +4 -4
- package/chunks/{chunk-62HSC5KO.js → chunk-JYM2UKSC.js} +2 -2
- package/chunks/{chunk-S7CMT75P.js → chunk-KIQ7D4YK.js} +25 -14
- package/chunks/{chunk-6VAMW6I2.js → chunk-KTH2NXBH.js} +1 -1
- package/chunks/{chunk-UIBQ77SC.js → chunk-L425LZSD.js} +3 -3
- package/chunks/{chunk-6IF6KATN.js → chunk-LQY5SDPR.js} +2 -2
- package/chunks/{chunk-J6YVMK2F.js → chunk-LVFKSBH3.js} +5 -5
- package/chunks/{chunk-4WPPTUCX.js → chunk-MPSJQSNY.js} +2 -2
- package/chunks/{chunk-5D3SQUVZ.js → chunk-MTJQKPTJ.js} +1 -1
- package/chunks/{chunk-3BYFQ2H6.js → chunk-MVE72SO7.js} +1 -1
- package/chunks/{chunk-T3SMR7ET.js → chunk-NHKFCD4F.js} +1 -1
- package/chunks/{chunk-POMHQTHO.js → chunk-NNVR5V2I.js} +5 -5
- package/chunks/{chunk-JHFU5Z3V.js → chunk-NYKKDVZN.js} +1 -1
- package/chunks/{chunk-7F23OSW4.js → chunk-OPNBX4BU.js} +1 -1
- package/chunks/{chunk-NIYI5272.js → chunk-QPGBAI7B.js} +1 -1
- package/chunks/{chunk-IBKJ7UBC.js → chunk-QQQRGEHT.js} +3 -3
- package/chunks/{chunk-KU4ER5BM.js → chunk-QS7N2YMJ.js} +1 -1
- package/chunks/{chunk-EUHJ4MJD.js → chunk-QSF42LP4.js} +3 -3
- package/chunks/{chunk-FJAC7QWS.js → chunk-QUMGEZV4.js} +1 -1
- package/chunks/{chunk-O3KQN6OE.js → chunk-RHYRXRHW.js} +1 -1
- package/chunks/{chunk-3WHURT5H.js → chunk-RYKMFNWC.js} +1 -1
- package/chunks/{chunk-O7LSTDIS.js → chunk-SGW7DY4F.js} +1 -1
- package/chunks/{chunk-M4M3XQJU.js → chunk-SJ7DMBBS.js} +3 -3
- package/chunks/{chunk-PC4V3VPG.js → chunk-SS2JMVDW.js} +1 -1
- package/chunks/{chunk-KUSGHH6D.js → chunk-SXPTY2NJ.js} +1 -1
- package/chunks/{chunk-TTV7MBGI.js → chunk-TLWUCRTO.js} +3 -3
- package/chunks/{chunk-X62LTOGE.js → chunk-TNQJ66S4.js} +52 -52
- package/chunks/{chunk-XJXDZPSD.js → chunk-UKS76REW.js} +3 -3
- package/chunks/{chunk-V2R5TAQQ.js → chunk-UUNTJ2TR.js} +1 -1
- package/chunks/{chunk-JASYFKBU.js → chunk-UXN7KJEI.js} +3 -3
- package/chunks/{chunk-QMW7RSXD.js → chunk-V6XI7HKD.js} +1 -1
- package/chunks/{chunk-5PY64ILO.js → chunk-VKFY6KJC.js} +3 -3
- package/chunks/{chunk-UVUHDO2Y.js → chunk-VNMKY2V3.js} +1 -1
- package/chunks/{chunk-FW5URUJS.js → chunk-W3HT3Y67.js} +3 -3
- package/chunks/{chunk-EPCKGEAE.js → chunk-WGXPBRMN.js} +1 -1
- package/chunks/{chunk-N2WMG5XF.js → chunk-WZKJPAWS.js} +2 -2
- package/chunks/{chunk-PJLUCMQZ.js → chunk-XF7WMIX5.js} +4 -4
- package/chunks/{chunk-DGBGYBO4.js → chunk-XPYWEOXT.js} +19 -5
- package/chunks/{chunk-WSWWZ7IT.js → chunk-Y6NXDVBG.js} +2 -2
- package/chunks/{chunk-RZCK3LM2.js → chunk-YV5ECLPM.js} +30 -30
- package/chunks/{chunk-5WYIBYDU.js → chunk-Z7APSZZK.js} +4 -4
- package/chunks/{chunk-L7A4D4IY.js → chunk-ZNNZZ4BW.js} +1 -1
- package/chunks/{codex-subagent-executor-URK6CSXE.js → codex-subagent-executor-QGB72XUZ.js} +24 -24
- package/chunks/{contextCommand-NFZZE3E4.js → contextCommand-OIZKYRYR.js} +22 -22
- package/chunks/{core-runtime-QX52LNEY.js → core-runtime-ZFOKJ32O.js} +21 -21
- package/chunks/{create-sub-session-2JFP4FMQ.js → create-sub-session-Y6QAGHZ6.js} +22 -22
- package/chunks/{daemon-git-worktree-guard-7JVFR6J3.js → daemon-git-worktree-guard-M73ZL5UO.js} +21 -21
- package/chunks/{daemon-status-provider-GGAO5SSF.js → daemon-status-provider-6YNQ74OV.js} +29 -29
- package/chunks/{daemon-trust-policy-D6AWUEZK.js → daemon-trust-policy-URDFVFCF.js} +26 -26
- package/chunks/{daemon-trust-policy-monitor-77JEJNAK.js → daemon-trust-policy-monitor-FKHP5BIE.js} +26 -26
- package/chunks/{deferred-core-runtime-XBSMNSGZ.js → deferred-core-runtime-3Q5WFRWL.js} +21 -21
- package/chunks/{edit-4AFGA6RJ.js → edit-BA7F4PT6.js} +13 -13
- package/chunks/{enterPlanMode-GWCLJSPB.js → enterPlanMode-EFBL4BF7.js} +16 -15
- package/chunks/{environment-GB72GJFP.js → environment-WPNDLJO7.js} +23 -23
- package/chunks/{errors-UB6Y6QB7.js → errors-7ETRPMNN.js} +23 -23
- package/chunks/{execution-tool-SM65QD3E.js → execution-tool-CAWRJH4J.js} +13 -13
- package/chunks/{execution-worker-277RP2BS.js → execution-worker-HLC7A4TJ.js} +16 -16
- package/chunks/{exitPlanMode-YL44MDSN.js → exitPlanMode-S23F45GN.js} +11 -11
- package/chunks/{fast-path-BHS3UUDU.js → fast-path-3I3VLXLK.js} +2 -2
- package/chunks/{glob-RMPRZBBM.js → glob-QTRRGB3D.js} +11 -11
- package/chunks/{goal-tools-IARELLX6.js → goal-tools-NUONFKIG.js} +11 -11
- package/chunks/{handleAutoUpdate-B6H2CUWG.js → handleAutoUpdate-QVESGET2.js} +23 -23
- package/chunks/{i18n-PEUDBKCF.js → i18n-ZSSY3WKU.js} +21 -21
- package/chunks/{initializer-5CTPR23V.js → initializer-T5M3ALQB.js} +26 -26
- package/chunks/{installationInfo-RKF4FYYG.js → installationInfo-P5YK242M.js} +21 -21
- package/chunks/{list-JFHTQZXB.js → list-MJY6Y5CU.js} +28 -28
- package/chunks/{llm-ZBVAGEV2.js → llm-W5ENEUT6.js} +52 -52
- package/chunks/{llm-content-generator-5ELI577U.js → llm-content-generator-TXCK3B4L.js} +3 -3
- package/chunks/{loadedSettingsAdapter-A63DFE7G.js → loadedSettingsAdapter-JLZC4ZBX.js} +26 -26
- package/chunks/{local-execution-environment-JYU5ETM4.js → local-execution-environment-YZMNKOAL.js} +16 -16
- package/chunks/{loggingContentGenerator-SCVT5IMD.js → loggingContentGenerator-N47XAAOQ.js} +12 -12
- package/chunks/{managed-npm-update-CW3A5IYM.js → managed-npm-update-4ROJTOPU.js} +21 -21
- package/chunks/{mcp-XCJSXNQS.js → mcp-RKXPYCS7.js} +26 -26
- package/chunks/{model-call-collection-QHVB4RVP.js → model-call-collection-OJVM2GWV.js} +1 -1
- package/chunks/{model-configuration-FMD3UX64.js → model-configuration-GYGU23MY.js} +27 -27
- package/chunks/{modelConfigUtils-BLJJCU4P.js → modelConfigUtils-6MZXMJI7.js} +23 -23
- package/chunks/{monitor-ZCZL365W.js → monitor-PY4ONOQZ.js} +11 -11
- package/chunks/{nonInteractiveCli-ND5K3Z6K.js → nonInteractiveCli-BEOCLPL7.js} +51 -51
- package/chunks/{nonInteractiveToolExecutor-JDDFIDEA.js → nonInteractiveToolExecutor-TWHMKTHV.js} +12 -12
- package/chunks/{notebook-edit-AW454CFZ.js → notebook-edit-735U37BJ.js} +12 -12
- package/chunks/{omni-5ALTY2B4.js → omni-TSSGKDWK.js} +8 -8
- package/chunks/{openaiContentGenerator-SKPNHTOM.js → openaiContentGenerator-66O4ID6K.js} +6 -6
- package/chunks/{openaiResponsesContentGenerator-G2PVJMGK.js → openaiResponsesContentGenerator-AI4VCUZW.js} +3 -3
- package/chunks/{processUtils-HED6IV7T.js → processUtils-KX55UCVT.js} +2 -2
- package/chunks/{prompt-terminal-ledger-IAHXPZ2K.js → prompt-terminal-ledger-TMEWRMRM.js} +22 -22
- package/chunks/{reactive-degrade-UDGAMHBZ.js → reactive-degrade-W6RK63HX.js} +7 -7
- package/chunks/{read-file-VM6TL6KB.js → read-file-EY55LILP.js} +2 -2
- package/chunks/{resumeHistoryUtils-PRCLL7VH.js → resumeHistoryUtils-64X6P4RL.js} +22 -22
- package/chunks/{ripGrep-RIKFZ5VR.js → ripGrep-EJBNAHG7.js} +3 -3
- package/chunks/{run-o1-code-serve-D4MM64ZN.js → run-o1-code-serve-XZD4J7UT.js} +32 -32
- package/chunks/{sandboxConfig-RMU6PWYZ.js → sandboxConfig-Q5T2KDWX.js} +21 -21
- package/chunks/{scheduled-tasks-4GGMZT2G.js → scheduled-tasks-VFTJISRZ.js} +27 -27
- package/chunks/{scheduler-VROKOD3O.js → scheduler-LFPINJ3O.js} +23 -23
- package/chunks/{serve-GK3X7AVS.js → serve-KFLQFW4S.js} +26 -26
- package/chunks/{server-YQ4IHB2Z.js → server-5VX5EJJN.js} +54 -54
- package/chunks/{session-2IHZ5JXU.js → session-FN3DK22S.js} +52 -52
- package/chunks/{session-attachments-root-AR5PGJNN.js → session-attachments-root-2KL64FGA.js} +21 -21
- package/chunks/{session-pr-refresh-PIZTNB2B.js → session-pr-refresh-RHCGWRST.js} +26 -26
- package/chunks/{settings-ODFKFJAO.js → settings-JNRHGVXK.js} +25 -25
- package/chunks/{shell-C3DRI7IE.js → shell-QXU6U3ZQ.js} +11 -11
- package/chunks/{skill-2EZBO4KR.js → skill-RRZHSAYL.js} +3 -3
- package/chunks/{skill-settings-VUTNOTIK.js → skill-settings-WUQLVFBS.js} +26 -26
- package/chunks/{spawnChannel-IQQIBRY4.js → spawnChannel-IIN6QVRF.js} +23 -23
- package/chunks/{standalone-update-DK57ZQVB.js → standalone-update-ET5NFOX4.js} +22 -22
- package/chunks/{startInteractiveUI-JXO3ANAJ.js → startInteractiveUI-LNRR43PI.js} +59 -59
- package/chunks/{team-create-SPQB4ZIQ.js → team-create-QJCKLQOF.js} +11 -11
- package/chunks/{team-plan-approval-DSGKM6D4.js → team-plan-approval-KQ2O743Z.js} +11 -11
- package/chunks/{terminal-image-renderer-F46UJJR7.js → terminal-image-renderer-AWXQOO4X.js} +21 -21
- package/chunks/{theme-manager-XHLUGDMV.js → theme-manager-VA6NQNIL.js} +21 -21
- package/chunks/{tool-result-media-UVGNZWQ7.js → tool-result-media-6ZV6V5VB.js} +8 -8
- package/chunks/{tool-search-TTHUGA3R.js → tool-search-HPPYWJBF.js} +2 -2
- package/chunks/{total-session-admission-IAZTBDST.js → total-session-admission-JVRBXXYV.js} +24 -24
- package/chunks/{trustedFolders-FIKJDDCU.js → trustedFolders-56YDYOI5.js} +22 -22
- package/chunks/{update-relaunch-QM4HHYSH.js → update-relaunch-GFLNZDAX.js} +5 -5
- package/chunks/{updateCheck-SHHRTDIC.js → updateCheck-GD2DXYWP.js} +21 -21
- package/chunks/{upload-config-EB7CHHBR.js → upload-config-E5MQ5NML.js} +5 -5
- package/chunks/{useAutoAcceptIndicator-IXO3W3HW.js → useAutoAcceptIndicator-KQ3H2K62.js} +28 -28
- package/chunks/{validateNonInterActiveAuth-76YN2FKV.js → validateNonInterActiveAuth-Y4MBCH4W.js} +49 -49
- package/chunks/{version-SGBHVOAU.js → version-IJ3TUIPZ.js} +1 -1
- package/chunks/{web-fetch-RKLVSDYG.js → web-fetch-F2CLSSW6.js} +2 -2
- package/chunks/{web-search-7OFCLM4E.js → web-search-2HX22GBH.js} +6 -6
- package/chunks/{workflow-FLGREXLS.js → workflow-O5UFRP3U.js} +12 -12
- package/chunks/{workspace-providers-status-Z5XTDXZO.js → workspace-providers-status-74YJNLJJ.js} +32 -32
- package/chunks/{workspace-registration-store-I257THQX.js → workspace-registration-store-TZFSDL3K.js} +1 -1
- package/chunks/{workspace-registry-DTSUSPQJ.js → workspace-registry-NAMQHWBJ.js} +24 -24
- package/chunks/{workspace-runtime-coordinator-7OPXPAWA.js → workspace-runtime-coordinator-WI35ERMI.js} +25 -25
- package/chunks/{workspace-service-DNZFALOP.js → workspace-service-GDF53GJS.js} +29 -29
- package/chunks/{workspace-skills-status-VH3GD2S3.js → workspace-skills-status-PNR3ICAP.js} +29 -29
- package/chunks/{workspace-trust-reconciler-LCBJTVGU.js → workspace-trust-reconciler-UO4CD5XT.js} +29 -29
- package/chunks/{write-file-NZJANURY.js → write-file-4NLDAO3E.js} +13 -13
- package/chunks/{zoom-image-3UVOSRAZ.js → zoom-image-WVJNVR4G.js} +2 -2
- package/cli.js +12 -12
- package/execution-worker.js +1 -1
- package/export-transcript-document.js +1 -1
- package/package.json +2 -2
- package/release-notes.json +7 -0
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DkmBSa44.js → abnfDiagram-VCTEODGH-GkC7qpZa.js} +1 -1
- package/web-shell/assets/{arc-B6QJJ8tD.js → arc-rCRTR9rP.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-Dfqoi9lk.js → architectureDiagram-5GKGNRK7-BXamqUa2.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-DclmlLhY.js → blockDiagram-NRAW4CY4-gcjjt4RN.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-0gbQb3pK.js → c4Diagram-UCG6FXSJ-y4txHZ64.js} +1 -1
- package/web-shell/assets/channel-CRgqjxIs.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-BAfaryX9.js → chunk-2Q5K7J3B-CP7Wj7xO.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-xSewF8tm.js → chunk-5VM5RSS4-Cp32oZuQ.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-ChEgStih.js → chunk-F27PBJKO-91dCDCyf.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-BAVY2RkO.js → chunk-G27WJ6UU-CE0yCTWa.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BXOwTSzw.js → chunk-JWPE2WC7-BrpX8c3O.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-nw5Rmnmd.js → chunk-LCL6LL3I-BYJTu4zN.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DIDQ5Zzu.js → chunk-POPQ4Y6H-Codub2tr.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-CjdgAA3l.js → chunk-SVP7TREG-DM-ke8Mr.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CKoYFCQo.js → chunk-XXDRQBXY-BLcKbNbx.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-oQ799Ozj.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-oQ799Ozj.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-OKMrJSR7.js → cose-bilkent-JH36ORCC-yMq4SSTl.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-BDE2ih0w.js → cynefin-OW5HDTMX-B-n83dZA.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DHgwp6ZM.js → cynefinDiagram-5FMLGOSQ-DwgvqFDD.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-mHCyf6A6.js → dagre-3AP2YEHR-BjByq1Of.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-CHeZ9YMQ.js → diagram-S7CK7UJ4-b-k59yRn.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-D3jwKiUo.js → diagram-UQ7AKVKN-d4Mot6Yz.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-z9gvH87B.js → diagram-VSXAHHWV-CkxocesP.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DBdwXye9.js → diagram-VX7I27RA-ClsrsYuH.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-BZrQD3_5.js → diagram-Z3DM3KII-C86pbkMU.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-CsdYNOhn.js → ebnfDiagram-PWID7BFC-Dd_W23Ti.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-kLiDhj_x.js → erDiagram-SSCWMZ5O-Bm0aSkLh.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-7E_nqNi9.js → flowDiagram-A5DVABFB-CzOHrYqI.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-frx7zvbA.js → ganttDiagram-EL5Y4UJY-aD7VOZlz.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DkyMPkwJ.js → gitGraphDiagram-WWUBYQGX-qC6lU8hO.js} +1 -1
- package/web-shell/assets/{index-oMwDI29g.js → index-Dt92aFEi.js} +1 -1
- package/web-shell/assets/{index-EoFfssG4.js → index-IQxVrdU8.js} +3 -3
- package/web-shell/assets/{infoDiagram-RXCK75RN-XljVTrU8.js → infoDiagram-RXCK75RN-D7n5hN5T.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C9WCq-5V.js → ishikawaDiagram-5VMMS53U-Crzzj9Hk.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DXu9g9Sy.js → journeyDiagram-EYS64GPL-FwmS41nw.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-Doy--c8N.js → kanban-definition-3QL26DDD-CKIs80uY.js} +1 -1
- package/web-shell/assets/{layout-CS7r1tO4.js → layout-BQz4dKSf.js} +1 -1
- package/web-shell/assets/{linear-CzSHv-4-.js → linear-BFhHgDEc.js} +1 -1
- package/web-shell/assets/{mermaid.core-7BsQ3zED.js → mermaid.core-Bk7ZiySi.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-yHWxnbXN.js → mindmap-definition-FBJOCRG2-BBWZxLbK.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DHUzJJRt.js → pegDiagram-XKGWAZYB-D3XoIA9B.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-CRjSY45J.js → pieDiagram-E7YTZNPT-B_tPTCKL.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CUKQicAO.js → quadrantDiagram-AXDQQJYC-BtsvzEtS.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CeIaRI86.js → railroadDiagram-O6MQD6OU-6ag1DheV.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CkdesAuv.js → requirementDiagram-EFPCY7ZU-8YxylfMT.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-DRv4I5Uy.js → sankeyDiagram-P5KCCOFB-1_AorqC_.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BUIm21Ol.js → sequenceDiagram-WJ2MYXX4-paioxV9Q.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-W69Ocb71.js → sizeCapture-X5ZJPWSS-oOBrUhQf.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-DD0RyKZg.js → stateDiagram-HBIQ2CUA-DGkViHHK.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-CWC6iKqT.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-vsonhOlr.js → swimlanes-XN3QIQJK-TqBChE5a.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Dz_lYxMp.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-DjdRx1i_.js → timeline-definition-24CTP7MA-BQGAL6YG.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CPVhp0Hy.js → vennDiagram-4TSXK5OY-CGPjpaes.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-M6mqQteg.js → wardleyDiagram-VM6X3IG4-DPK0MANE.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-Cli-2870.js → xychartDiagram-S5SC5T6Z-D4TN6euT.js} +1 -1
- package/web-shell/index.html +1 -1
- package/web-shell/sw.js +1 -1
- package/web-shell/assets/channel-COSuEQ94.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DUKWtFFX.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DUKWtFFX.js +0 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C5kAp2c6.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DP2NE03a.js +0 -8
package/bundled/commit/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: commit
|
|
3
|
-
description:
|
|
3
|
+
description: "Use when the user asks to commit work or write commit messages: one commit per logical change, in the repository's style, confirmed one by one (/commit, /commit <what changed>). It never pushes."
|
|
4
4
|
argument-hint: '[what changed, optional]'
|
|
5
5
|
allowedTools:
|
|
6
6
|
- run_shell_command
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugging
|
|
3
|
+
description: Use when a test fails, an error appears, or behaviour differs from what is expected, before proposing or making a fix.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Debugging
|
|
7
|
+
|
|
8
|
+
Find the cause before changing code. A fix made without knowing the cause usually moves the symptom,
|
|
9
|
+
and each guessed fix makes the next one harder to reason about.
|
|
10
|
+
|
|
11
|
+
## 1. Reproduce and read
|
|
12
|
+
|
|
13
|
+
- Read the whole error: message, stack trace, exit code, and the lines of output before it.
|
|
14
|
+
- Reproduce it with one command you can run again. If it does not reproduce reliably, collect more
|
|
15
|
+
data (inputs, environment, timing) before going further; do not guess.
|
|
16
|
+
- Check what changed recently: the diff, new dependencies, configuration, environment.
|
|
17
|
+
|
|
18
|
+
## 2. Trace to the origin
|
|
19
|
+
|
|
20
|
+
- Follow the bad value backwards from where it shows up to where it was first wrong. Fix it there, not
|
|
21
|
+
where it surfaced.
|
|
22
|
+
- When the path crosses components (a CLI calling a library calling a database), check the data at each
|
|
23
|
+
boundary and find the first one where it is wrong.
|
|
24
|
+
- `references/root-cause-tracing.md` has techniques for traces that are not obvious: temporary
|
|
25
|
+
logging with call stacks, finding which test pollutes shared state, waiting for conditions instead of
|
|
26
|
+
timing.
|
|
27
|
+
|
|
28
|
+
## 3. Compare with something that works
|
|
29
|
+
|
|
30
|
+
- Find similar code in the same project that behaves correctly, or the reference the code is meant to
|
|
31
|
+
follow, and read it completely.
|
|
32
|
+
- List every difference between the working and the broken case, however small.
|
|
33
|
+
|
|
34
|
+
## 4. One hypothesis at a time
|
|
35
|
+
|
|
36
|
+
- State it before acting: "X causes Y because Z."
|
|
37
|
+
- Test it with the smallest change or observation that could prove it wrong, one variable at a time.
|
|
38
|
+
- If it is wrong, form a new hypothesis from what you learned. Do not stack another change on top of the
|
|
39
|
+
first.
|
|
40
|
+
|
|
41
|
+
## 5. Fix at the cause
|
|
42
|
+
|
|
43
|
+
- Write a test that reproduces the bug and fails (the `tdd` skill), then make one change at the cause.
|
|
44
|
+
- Run the reproduction and the project's tests in the reach of the change.
|
|
45
|
+
- Remove any temporary logging you added.
|
|
46
|
+
|
|
47
|
+
## When fixes keep failing
|
|
48
|
+
|
|
49
|
+
Follow the core rule for repeated failures: after the same fix fails twice, stop and re-read the
|
|
50
|
+
relevant code top-down, saying where your understanding was wrong. When each fix reveals a new problem
|
|
51
|
+
in a different place, the design is the likely cause: stop and bring the evidence to the user before
|
|
52
|
+
another attempt, or, when no one can be asked, report it as the blocker.
|
|
53
|
+
|
|
54
|
+
## Reporting
|
|
55
|
+
|
|
56
|
+
Say what the cause was, the evidence that shows it (command and output), what you changed, and how you
|
|
57
|
+
verified it. If you could not find the cause, say what you ruled out and what you would check next;
|
|
58
|
+
do not present a workaround as a fix.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Root-cause tracing
|
|
2
|
+
|
|
3
|
+
## Trace backwards
|
|
4
|
+
|
|
5
|
+
1. Note where the wrong value or behaviour is observed.
|
|
6
|
+
2. Find the code that produced it and the input it received.
|
|
7
|
+
3. Ask where that input came from, and repeat until you reach the first place the value is wrong.
|
|
8
|
+
4. That place is the cause. Everything after it only carried the value along.
|
|
9
|
+
|
|
10
|
+
When reading is not enough, add temporary instrumentation at each step: log the value together with a
|
|
11
|
+
call stack (in JavaScript `new Error().stack`, in Python `traceback.format_stack()`), write it to
|
|
12
|
+
stderr, and run the reproduction. Remove the instrumentation before finishing.
|
|
13
|
+
|
|
14
|
+
## Check every boundary
|
|
15
|
+
|
|
16
|
+
In a chain of components, log what enters and leaves each one in a single run. The first boundary where
|
|
17
|
+
the data is wrong narrows the search to one component. This beats reading all the code when the chain
|
|
18
|
+
is long or partly outside the project.
|
|
19
|
+
|
|
20
|
+
## A test that fails only with others
|
|
21
|
+
|
|
22
|
+
When a test passes alone and fails in the suite, another test is leaving state behind (a file, a
|
|
23
|
+
database row, a global, an environment variable). Run the failing test together with halves of the
|
|
24
|
+
suite that ran before it, keep the half that still fails, and repeat until one test remains. Then fix
|
|
25
|
+
the cleanup in that test, not the victim.
|
|
26
|
+
|
|
27
|
+
## Timing and flakiness
|
|
28
|
+
|
|
29
|
+
A test or script that sleeps a fixed time and then checks a result fails on slow machines and wastes
|
|
30
|
+
time on fast ones. Wait for the condition instead: poll it at a short interval, with an overall
|
|
31
|
+
timeout and a message that says what was being waited for. Keep a fixed delay only when the behaviour
|
|
32
|
+
itself is time-based (a debounce, a retry interval), and say so next to the delay.
|
|
33
|
+
|
|
34
|
+
## Make it impossible, not just fixed
|
|
35
|
+
|
|
36
|
+
After fixing the cause, check whether the same bad value can enter through another path. Validate where
|
|
37
|
+
data enters the system, so that the next caller cannot reintroduce the bug.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design
|
|
3
|
+
description: Use when about to build a feature, component or project, or change behaviour, and what to build and how is not settled yet.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Design before building
|
|
7
|
+
|
|
8
|
+
Settle what to build, and how, before writing product code. The amount of design scales with the
|
|
9
|
+
task: a question gets a probe, a change to an existing flow gets a short design in the conversation, a
|
|
10
|
+
new system gets a full design that becomes the plan.
|
|
11
|
+
|
|
12
|
+
## 1. Classify the request, and say it
|
|
13
|
+
|
|
14
|
+
Read the relevant code first. Then pick one path and tell the user which one, in one line:
|
|
15
|
+
|
|
16
|
+
- **Spike**: the question is whether something is feasible or how something behaves.
|
|
17
|
+
- **Bounded**: a well-scoped change to a flow that already exists in this project.
|
|
18
|
+
- **Architectural**: a new project, subsystem, interface or data model, or a request that spans
|
|
19
|
+
several independent parts.
|
|
20
|
+
|
|
21
|
+
When two paths could fit, take the heavier one. If the work turns out bigger than it looked, move up a
|
|
22
|
+
path and say so; never move down in the middle of a task. A request that spans several independent
|
|
23
|
+
parts is split: each part gets its own design, plan and implementation, one at a time.
|
|
24
|
+
|
|
25
|
+
## 2. Understand the intent
|
|
26
|
+
|
|
27
|
+
- Ask about the purpose before proposing features: what the user wants to achieve and for whom.
|
|
28
|
+
- One question per message, with choices when the answers are predictable. Never ask what the code can
|
|
29
|
+
tell you.
|
|
30
|
+
- Write back your understanding, separating what the user said from what you assume.
|
|
31
|
+
- When the session cannot ask questions, state the assumptions you made and continue on them.
|
|
32
|
+
|
|
33
|
+
## 3. Follow the path
|
|
34
|
+
|
|
35
|
+
**Spike.** Describe the probe in two or three sentences, run it, and report a recommendation with the
|
|
36
|
+
evidence. Anything you built for it is throwaway: say so, and do not present it as the implementation.
|
|
37
|
+
|
|
38
|
+
**Bounded.** Present a short design in the conversation: what changes, where, what stays untouched, and
|
|
39
|
+
how it will be tested. Wait for the user's approval, then implement it (with the `tdd` skill when the
|
|
40
|
+
code has tests). No design document and no separate plan.
|
|
41
|
+
|
|
42
|
+
**Architectural.**
|
|
43
|
+
|
|
44
|
+
1. Propose two or three approaches with their trade-offs and say which one you recommend and why.
|
|
45
|
+
2. Present the design in sections, each a few sentences to a short page depending on its weight:
|
|
46
|
+
components and their single responsibilities, interfaces between them, data flow, error handling,
|
|
47
|
+
and testing. Ask for approval after each section.
|
|
48
|
+
3. Check the whole design once before the last approval: no placeholders, no contradictions between
|
|
49
|
+
sections, nothing in scope that was not asked for.
|
|
50
|
+
4. Hand it to the `write-plan` skill. The approved design is the plan's source; when plan mode is active, the
|
|
51
|
+
plan is submitted there and the harness keeps it.
|
|
52
|
+
|
|
53
|
+
## Approval covers only what was shown
|
|
54
|
+
|
|
55
|
+
Approving an idea does not approve a design that has not been presented yet, and approving a design
|
|
56
|
+
does not approve the plan. Each stage waits for its own yes. Read-only exploration needs no approval.
|
|
57
|
+
|
|
58
|
+
A session that cannot ask questions (headless, or no one to answer) cannot wait for a yes: at each
|
|
59
|
+
stage take the option you recommend, state it and the assumptions behind it in your report, and
|
|
60
|
+
continue.
|
|
61
|
+
|
|
62
|
+
## Keep it small
|
|
63
|
+
|
|
64
|
+
Design only what the request needs. Leave out options, abstractions and features nobody asked for, and
|
|
65
|
+
prefer units with one clear purpose that can be understood and tested on their own.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: execute-plan
|
|
3
|
+
description: Use when carrying out an approved implementation plan in this session, task by task.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Executing a plan
|
|
7
|
+
|
|
8
|
+
The plan already made the decisions. Carry them out in order, prove each task with its tests, and keep
|
|
9
|
+
a record that survives your own forgetting.
|
|
10
|
+
|
|
11
|
+
## Before the first task
|
|
12
|
+
|
|
13
|
+
1. Read the whole plan once and note its global constraints.
|
|
14
|
+
2. Workspace: if the user wants the work isolated from the current branch, create a worktree with the
|
|
15
|
+
worktree tool; ask once if the plan is large and they have not said. Do not create one on your own.
|
|
16
|
+
3. Run the project's tests in the reach of the plan and note the result, so a later failure can be told
|
|
17
|
+
apart from one that was already there.
|
|
18
|
+
4. Put one todo item per task in the todo list when the tool is available.
|
|
19
|
+
|
|
20
|
+
## Each task
|
|
21
|
+
|
|
22
|
+
1. Read the task again from the plan: what you remember is a summary.
|
|
23
|
+
2. Follow its steps with the `tdd` skill: the test fails first for the stated reason, then passes.
|
|
24
|
+
3. Compare every `Expected:` in the task with what you actually saw.
|
|
25
|
+
4. Commit the task on its own, staging only its files (through `/commit`).
|
|
26
|
+
5. Mark the todo item done.
|
|
27
|
+
|
|
28
|
+
When the code does not behave as the plan says, use the `debugging` skill. When the plan itself is
|
|
29
|
+
wrong or silent, decide, and record the decision as `Ruling: <what> — <why> — <cost if wrong>` in the
|
|
30
|
+
todo item and in your final report. The requirements win over the plan; your judgement settles what
|
|
31
|
+
neither answers.
|
|
32
|
+
|
|
33
|
+
## When to stop
|
|
34
|
+
|
|
35
|
+
Continue between tasks without asking. Stop and ask only for:
|
|
36
|
+
|
|
37
|
+
- an irreversible or destructive action;
|
|
38
|
+
- a security-sensitive action;
|
|
39
|
+
- a side effect outside the workspace that is normally confirmed first (merge, push, publish);
|
|
40
|
+
- a plan so broken that every way forward is a guess.
|
|
41
|
+
|
|
42
|
+
## After the last task
|
|
43
|
+
|
|
44
|
+
1. Run the project's build, lint and the tests in the reach of all tasks.
|
|
45
|
+
2. Ask one fresh reviewer, with the agent tool, to review the whole change: give it the plan's location
|
|
46
|
+
or text, the global constraints, the review focus and the commit range, and ask for findings graded
|
|
47
|
+
critical, important or minor, with file and line.
|
|
48
|
+
3. Fix critical and important findings in one pass, each with a test, and run the checks again. List
|
|
49
|
+
the minor ones.
|
|
50
|
+
4. Report: what was built, the evidence that it works, every ruling you made, and the deferred minor
|
|
51
|
+
findings.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: extension-creator
|
|
3
|
-
description:
|
|
3
|
+
description: 'Use when the user wants to create, scaffold, customize, validate or locally test an O1-Code extension (context, commands, skills, agents, MCP servers, settings, hooks, LSP): /extension-creator <path> [template].'
|
|
4
4
|
argument-hint: '<extension-path> [template]'
|
|
5
5
|
allowedTools:
|
|
6
6
|
- run_shell_command
|
package/bundled/finish/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: finish
|
|
3
|
-
description:
|
|
3
|
+
description: 'Use when the work is done and needs its closing checks (build, lint, typecheck, tests in reach, docs) before a commit: /finish to check and report, /finish --fix to also fix, /finish --full for the whole suite; it then offers /commit.'
|
|
4
4
|
argument-hint: '[--fix] [--full]'
|
|
5
5
|
allowedTools:
|
|
6
6
|
- run_shell_command
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goal-draft
|
|
3
|
-
description:
|
|
3
|
+
description: 'Use when the user wants to set, define or check a Goal, or says "keep going until X": /goal-draft <intent or existing goal> writes an objective the verifier can judge; it never starts the work.'
|
|
4
4
|
argument-hint: '[intent, or an existing goal to tighten]'
|
|
5
5
|
allowedTools:
|
|
6
6
|
- get_goal
|
package/bundled/new-app/SKILL.md
CHANGED
|
@@ -4,6 +4,8 @@ description: Workflow for creating new applications from scratch. Covers require
|
|
|
4
4
|
when_to_use: When the user asks to create a new application, project, website, game, mobile app, CLI tool, or library from scratch.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
Load the `design` skill first: a new application is an architectural request, and that skill settles the requirements and the approach with the user. This skill adds the technology defaults and the delivery steps below.
|
|
8
|
+
|
|
7
9
|
**Goal:** Autonomously implement and deliver a visually appealing, substantially complete, and functional prototype. Utilize all tools at your disposal to implement the application. Some tools you may especially find useful are 'write_file', 'edit' and 'run_shell_command'.
|
|
8
10
|
|
|
9
11
|
1. **Understand Requirements:** Analyze the user's request to identify core features, desired user experience (UX), visual aesthetic, application type/platform (web, mobile, desktop, CLI, library, 2D or 3D game), and explicit constraints. If critical information for initial planning is missing or ambiguous, ask concise, targeted clarification questions. Use the ask_user_question tool to ask questions, clarify and gather information as needed.
|
package/bundled/review/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to review code changes, a pull request or specific files for correctness, security, quality and performance; --comment posts the findings to the PR and --fix applies them.
|
|
4
4
|
argument-hint: '[pr-number|file-path] [--effort low|medium|high] [--severity-floor critical|suggestion] [--topology minimal] [--comment] [--fix] [--resume]'
|
|
5
5
|
allowedTools:
|
|
6
6
|
- task
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: Use when implementing a feature or fixing a bug in code that has, or can have, automated tests, before writing the implementation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Test-driven development
|
|
7
|
+
|
|
8
|
+
Write the test first, watch it fail for the reason you expect, then write the smallest code that makes
|
|
9
|
+
it pass. A test you never saw fail may be testing nothing: it can pass because of a typo, a wrong
|
|
10
|
+
import, or behaviour that already existed.
|
|
11
|
+
|
|
12
|
+
## The cycle
|
|
13
|
+
|
|
14
|
+
Repeat for each behaviour, one at a time:
|
|
15
|
+
|
|
16
|
+
1. **Red.** Write one test for the next behaviour, named after what it proves. Run it and read the
|
|
17
|
+
output. It must fail, and fail on the assertion you wrote, not on an import error or a typo. If it
|
|
18
|
+
passes, either the behaviour already exists or the test is wrong: find out which before going on.
|
|
19
|
+
2. **Green.** Write the least code that makes that test pass. No extra options, branches or cleanup
|
|
20
|
+
the test does not ask for.
|
|
21
|
+
3. **Check.** Run the project's tests in the reach of the change (the file you touched and the tests
|
|
22
|
+
of its callers), not only the new test. Everything must pass, with no new warnings in the output.
|
|
23
|
+
4. **Refactor.** Improve names and structure with the tests green, and run them again.
|
|
24
|
+
|
|
25
|
+
For a bug fix, the first test reproduces the bug: it fails today with the symptom the user reported.
|
|
26
|
+
It then stays as the regression test.
|
|
27
|
+
|
|
28
|
+
## When the code came first
|
|
29
|
+
|
|
30
|
+
If implementation code already exists without a test (yours from earlier in this task, or the user's),
|
|
31
|
+
do not delete it. Write the test now, then prove it can fail: temporarily undo only your own change
|
|
32
|
+
(or break the branch the test covers), run the test, see it fail, restore, and run it again green. A
|
|
33
|
+
test that stays green with the behaviour removed proves nothing.
|
|
34
|
+
|
|
35
|
+
## When this does not apply
|
|
36
|
+
|
|
37
|
+
Say so in one line and continue without the cycle when:
|
|
38
|
+
|
|
39
|
+
- the user asked for a throwaway prototype or a spike;
|
|
40
|
+
- the change is configuration, generated code, or documentation only;
|
|
41
|
+
- the project has no test setup and the user does not want one added.
|
|
42
|
+
|
|
43
|
+
In every other case, missing tooling is part of the task: find the project's test command (README,
|
|
44
|
+
package or build configuration, existing tests) before writing code. Never assume a standard command.
|
|
45
|
+
|
|
46
|
+
## Good tests
|
|
47
|
+
|
|
48
|
+
Read `references/good-tests.md` before writing the first test of the task. In short: each test names
|
|
49
|
+
the break it catches, exercises the real code rather than a mock of it, and derives its expected value
|
|
50
|
+
independently of the implementation.
|
|
51
|
+
|
|
52
|
+
## Reporting
|
|
53
|
+
|
|
54
|
+
In the final message, for each behaviour or at least for the task, give the evidence of the cycle:
|
|
55
|
+
the command you ran, that it failed first and why, and the passing run after the change. If you
|
|
56
|
+
skipped the cycle, say which exception applied.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Good tests
|
|
2
|
+
|
|
3
|
+
Two questions decide whether a test is worth keeping: what break does it catch, and would it notice if
|
|
4
|
+
the real code stopped working?
|
|
5
|
+
|
|
6
|
+
## Each test names the break it catches
|
|
7
|
+
|
|
8
|
+
- Name the test after the behaviour and the condition: `rejects a blank title`, `lists done tasks
|
|
9
|
+
last`, not `test_add_2`.
|
|
10
|
+
- One behaviour per test. When it fails, the name alone should tell the reader what broke.
|
|
11
|
+
- Before writing the body, say which wrong implementation would make it fail: a wrong constant, a
|
|
12
|
+
missing branch, a missing side effect, an empty return, a skipped validation. If none would, the test
|
|
13
|
+
is not needed.
|
|
14
|
+
|
|
15
|
+
## Each test exercises the real thing
|
|
16
|
+
|
|
17
|
+
- Drive the code the way its users do: call the public function, run the command, send the request.
|
|
18
|
+
- Mock only what you do not own or cannot run in a test (a network service, the clock, randomness),
|
|
19
|
+
and at the boundary where your code meets it. A mock earns no assertions of its own: asserting that
|
|
20
|
+
a mock was called with what you just configured it to return tests the mock.
|
|
21
|
+
- Use real data shapes. A fixture missing fields the real data has hides the bugs those fields cause.
|
|
22
|
+
|
|
23
|
+
## Expected values come from outside the code
|
|
24
|
+
|
|
25
|
+
- Work the expected value out from the requirement, not by running the code and pasting what it
|
|
26
|
+
printed.
|
|
27
|
+
- Do not assert on implementation constants (`MAX_RETRIES == 5`) or on the exact text of a source file:
|
|
28
|
+
that proves the source is the source.
|
|
29
|
+
|
|
30
|
+
## Keep the suite honest
|
|
31
|
+
|
|
32
|
+
- A test must be able to fail. After writing it, break the code once (or check it against the code
|
|
33
|
+
without your change) and watch it go red.
|
|
34
|
+
- Clean up what the test creates (files, databases, environment variables) inside the test or its
|
|
35
|
+
fixture, so tests pass in any order.
|
|
36
|
+
- A flaky test is a defect: wait for the condition the test depends on, with a timeout, instead of
|
|
37
|
+
sleeping a fixed time.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-plan
|
|
3
|
+
description: Use when requirements or a design are agreed for multi-step work and a written implementation plan is needed before editing code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Writing an implementation plan
|
|
7
|
+
|
|
8
|
+
A plan records the decisions an implementer cannot make alone: which files, which names and
|
|
9
|
+
signatures, which values from the requirements, and which tests prove each task. Write it for an
|
|
10
|
+
engineer who knows the language well but has not seen this codebase or this conversation. A plan
|
|
11
|
+
longer than the code it describes has written the code instead of deciding it.
|
|
12
|
+
|
|
13
|
+
## Structure
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
# <Feature> implementation plan
|
|
17
|
+
|
|
18
|
+
Goal: <one sentence>
|
|
19
|
+
Approach: <two or three sentences>
|
|
20
|
+
|
|
21
|
+
## Global constraints
|
|
22
|
+
|
|
23
|
+
<one line each: requirements that hold for every task, with exact values>
|
|
24
|
+
|
|
25
|
+
## Review focus
|
|
26
|
+
|
|
27
|
+
<the input classes or failure modes most likely to break this work>
|
|
28
|
+
|
|
29
|
+
## Files
|
|
30
|
+
|
|
31
|
+
<each file created or changed, and its one responsibility>
|
|
32
|
+
|
|
33
|
+
### Task 1: <component>
|
|
34
|
+
|
|
35
|
+
Files: create/modify <paths>; test <path>
|
|
36
|
+
Interfaces: consumes <names and signatures from earlier tasks>; produces <names and signatures>
|
|
37
|
+
|
|
38
|
+
- [ ] Write the failing test for <behaviour>. Run `<command>`. Expected: fails with <reason>.
|
|
39
|
+
- [ ] Implement <what>, in <file>, with <signature>.
|
|
40
|
+
- [ ] Run `<command>`. Expected: <passing output>.
|
|
41
|
+
- [ ] Commit.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Rules for tasks and steps
|
|
45
|
+
|
|
46
|
+
- A task is the smallest unit with its own test cycle that a reviewer could accept or reject on its
|
|
47
|
+
own. Fold setup, configuration and documentation into the task that needs them.
|
|
48
|
+
- A step is one action with a result that can be checked. A step is complete when the implementer can
|
|
49
|
+
do exactly one reasonable thing from it: exact paths, exact commands, exact values from the
|
|
50
|
+
requirements. Leave the bodies of functions to the implementer.
|
|
51
|
+
- Names and types used across tasks appear in the Interfaces lines, so each task can be read alone.
|
|
52
|
+
- Order tasks so that each one leaves the project building and its tests passing.
|
|
53
|
+
|
|
54
|
+
## Check the plan before handing it over
|
|
55
|
+
|
|
56
|
+
1. Every requirement maps to at least one task.
|
|
57
|
+
2. No placeholder is left ("TBD", "handle errors", "add tests").
|
|
58
|
+
3. A name is spelled the same in every task that uses it.
|
|
59
|
+
4. The review focus is filled in, or says you checked and found nothing.
|
|
60
|
+
5. The plan is shorter than the code it describes.
|
|
61
|
+
|
|
62
|
+
## Hand-off
|
|
63
|
+
|
|
64
|
+
When plan mode is active, submit the plan through plan mode; the harness keeps the approved plan.
|
|
65
|
+
Otherwise present it in the conversation and wait for approval. Then offer the two ways to run it:
|
|
66
|
+
task by task in this session with the `execute-plan` skill, or unattended as a Goal (`/goal`).
|
|
@@ -14,36 +14,36 @@ import "./chunk-PJF3WRYZ.js";
|
|
|
14
14
|
import "./chunk-F5IN4KK7.js";
|
|
15
15
|
import "./chunk-ZCZKKAIG.js";
|
|
16
16
|
import "./chunk-EDRKBK4B.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-FWXUI7DZ.js";
|
|
18
18
|
import "./chunk-MYMATZAY.js";
|
|
19
19
|
import "./chunk-6IFQXZTP.js";
|
|
20
20
|
import "./chunk-YO3SEHXM.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-QUMGEZV4.js";
|
|
22
22
|
import "./chunk-P7UNPKJM.js";
|
|
23
23
|
import "./chunk-KXN7Q6SB.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-UXN7KJEI.js";
|
|
25
25
|
import "./chunk-YIEC5SIW.js";
|
|
26
26
|
import "./chunk-4JDEAIW5.js";
|
|
27
27
|
import "./chunk-TIYFDYIF.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-NNVR5V2I.js";
|
|
29
|
+
import "./chunk-VNMKY2V3.js";
|
|
30
30
|
import "./chunk-NWCDFCWK.js";
|
|
31
31
|
import "./chunk-ZMZRVR62.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-JBMSEZDI.js";
|
|
33
33
|
import "./chunk-AQVYFR7E.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-UUNTJ2TR.js";
|
|
35
|
+
import "./chunk-VKFY6KJC.js";
|
|
36
36
|
import "./chunk-F3FKDGHN.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-C6LFEUFU.js";
|
|
38
38
|
import "./chunk-UBWL27PO.js";
|
|
39
39
|
import "./chunk-BWRP5ZMP.js";
|
|
40
40
|
import "./chunk-DM6W2QYB.js";
|
|
41
41
|
import "./chunk-UAACCQBD.js";
|
|
42
42
|
import "./chunk-GVWQRVLV.js";
|
|
43
43
|
import "./chunk-2QYMJSSC.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-SGW7DY4F.js";
|
|
45
45
|
import "./chunk-AVCUVYSA.js";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-TNQJ66S4.js";
|
|
47
47
|
import "./chunk-FNALBCC7.js";
|
|
48
48
|
import "./chunk-BZOAEOYF.js";
|
|
49
49
|
import "./chunk-BIDB75DA.js";
|
|
@@ -57,13 +57,13 @@ import "./chunk-MZI6FDZT.js";
|
|
|
57
57
|
import "./chunk-4MSX3ERA.js";
|
|
58
58
|
import "./chunk-YGG52IIN.js";
|
|
59
59
|
import "./chunk-EP7GGUVV.js";
|
|
60
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-3YCUO772.js";
|
|
61
61
|
import "./chunk-EXWAECKM.js";
|
|
62
62
|
import "./chunk-S2LBLNBW.js";
|
|
63
63
|
import "./chunk-ZZVIBILR.js";
|
|
64
64
|
import "./chunk-OI7IVUEO.js";
|
|
65
65
|
import "./chunk-DS3COGEF.js";
|
|
66
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-IFBW6FYH.js";
|
|
67
67
|
import "./chunk-OBPGYMIV.js";
|
|
68
68
|
import "./chunk-RS2LNQEC.js";
|
|
69
69
|
import "./chunk-SYMKXR42.js";
|
|
@@ -81,20 +81,20 @@ import "./chunk-GUMLL5KC.js";
|
|
|
81
81
|
import "./chunk-HPQNI3OQ.js";
|
|
82
82
|
import "./chunk-3XCL57IX.js";
|
|
83
83
|
import "./chunk-YCZXGP63.js";
|
|
84
|
-
import "./chunk-
|
|
84
|
+
import "./chunk-QPGBAI7B.js";
|
|
85
85
|
import "./chunk-CI2ZHR5C.js";
|
|
86
|
-
import "./chunk-
|
|
86
|
+
import "./chunk-4JQ6AGCG.js";
|
|
87
87
|
import "./chunk-ZFZB6WC5.js";
|
|
88
88
|
import "./chunk-4J6KRUQB.js";
|
|
89
89
|
import "./chunk-QFQQICSQ.js";
|
|
90
90
|
import "./chunk-I7XXUDXZ.js";
|
|
91
91
|
import "./chunk-KQAVEXYD.js";
|
|
92
92
|
import "./chunk-HLWXBJCH.js";
|
|
93
|
-
import "./chunk-
|
|
93
|
+
import "./chunk-COABCWBY.js";
|
|
94
94
|
import "./chunk-IO32UWHY.js";
|
|
95
95
|
import "./chunk-OSMXNPJP.js";
|
|
96
96
|
import "./chunk-HX6AICAX.js";
|
|
97
|
-
import "./chunk-
|
|
97
|
+
import "./chunk-G4NGNKM6.js";
|
|
98
98
|
import "./chunk-PPR5SHEF.js";
|
|
99
99
|
import "./chunk-FOZEB37P.js";
|
|
100
100
|
import "./chunk-BQAZCJF7.js";
|
|
@@ -102,12 +102,12 @@ import "./chunk-65B6QBMP.js";
|
|
|
102
102
|
import "./chunk-4OCNSFYL.js";
|
|
103
103
|
import "./chunk-O4IWNFDK.js";
|
|
104
104
|
import "./chunk-NGE3GHMN.js";
|
|
105
|
-
import "./chunk-
|
|
105
|
+
import "./chunk-ZNNZZ4BW.js";
|
|
106
106
|
import "./chunk-WMJL2XAM.js";
|
|
107
107
|
import "./chunk-CP63SY5N.js";
|
|
108
|
-
import "./chunk-
|
|
108
|
+
import "./chunk-4NV74I76.js";
|
|
109
109
|
import "./chunk-POHJY7RJ.js";
|
|
110
|
-
import "./chunk-
|
|
110
|
+
import "./chunk-RYKMFNWC.js";
|
|
111
111
|
import "./chunk-242JUBPM.js";
|
|
112
112
|
import "./chunk-E4BNWSC7.js";
|
|
113
113
|
import "./chunk-5P5ZJMW2.js";
|
|
@@ -121,7 +121,7 @@ import "./chunk-R7FX7HIR.js";
|
|
|
121
121
|
import "./chunk-FFUKRRCR.js";
|
|
122
122
|
import "./chunk-23AFREUQ.js";
|
|
123
123
|
import "./chunk-HOPKSSYR.js";
|
|
124
|
-
import "./chunk-
|
|
124
|
+
import "./chunk-LVFKSBH3.js";
|
|
125
125
|
import "./chunk-PLWOHBC7.js";
|
|
126
126
|
import "./chunk-LEXKU5FI.js";
|
|
127
127
|
import "./chunk-IQEM74QW.js";
|