@coopcli/specsketch 0.1.3 → 5.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/README.md +80 -2
- package/dist/cli/index.js +2159 -81
- package/dist/client/assets/abnfDiagram-VRR7QNED-CTNJVYti.js +1 -0
- package/dist/client/assets/{ar-SA-G6X2FPQ2-jwBzex-2.js → ar-SA-G6X2FPQ2-Dx5RkIpf.js} +1 -1
- package/dist/client/assets/architecture-TIHT7OUA-b9_tu6da.js +1 -0
- package/dist/client/assets/{architectureDiagram-ZJ3FMSHR-DdYSrIl0.js → architectureDiagram-ZJ3FMSHR-C7zIp5ev.js} +1 -1
- package/dist/client/assets/{az-AZ-76LH7QW2-Dis0vDnD.js → az-AZ-76LH7QW2-lKEr0lki.js} +1 -1
- package/dist/client/assets/{bg-BG-XCXSNQG7-BCcYYSpX.js → bg-BG-XCXSNQG7-BrueLcBf.js} +1 -1
- package/dist/client/assets/{blockDiagram-677ZJIJ3-IHRgXLG2.js → blockDiagram-677ZJIJ3-B3Y6utF7.js} +1 -1
- package/dist/client/assets/{bn-BD-2XOGV67Q-Cs38e4dA.js → bn-BD-2XOGV67Q-BVnHj_Zk.js} +1 -1
- package/dist/client/assets/{c4Diagram-LMCZKHZV-DuitrGTA.js → c4Diagram-LMCZKHZV-Dt_cruyV.js} +1 -1
- package/dist/client/assets/{ca-ES-6MX7JW3Y-J6JluMn1.js → ca-ES-6MX7JW3Y-BM6SppAL.js} +1 -1
- package/dist/client/assets/channel-Dz1KOO7f.js +1 -0
- package/dist/client/assets/{chunk-32BRIVSS-FVqbFiM9.js → chunk-32BRIVSS-Ca80Axke.js} +1 -1
- package/dist/client/assets/{chunk-52WLFC77-B5fSTF98.js → chunk-52WLFC77-CtSrQbPt.js} +1 -1
- package/dist/client/assets/{chunk-C7G6YPKG-CUlznrHX.js → chunk-C7G6YPKG-B2LFv6gm.js} +1 -1
- package/dist/client/assets/{chunk-EIO257PC-B_XNiJ0A.js → chunk-EIO257PC-BAdMCi3M.js} +1 -1
- package/dist/client/assets/{chunk-EX3LRPZG-D7H3g3lm.js → chunk-EX3LRPZG-BJ4MtZ6_.js} +1 -1
- package/dist/client/assets/{chunk-FWX5IMBZ-DlSTzkRW.js → chunk-FWX5IMBZ-Oeex84SP.js} +2 -2
- package/dist/client/assets/{chunk-HOUHSVGY-BB87Tq5U.js → chunk-HOUHSVGY-CwXgFjr1.js} +1 -1
- package/dist/client/assets/{chunk-ICXQ74PX-DHmdnexU.js → chunk-ICXQ74PX-CNjPZw9f.js} +1 -1
- package/dist/client/assets/{chunk-MOJQB5TN-Cd67Wk3-.js → chunk-MOJQB5TN-CH9qxz0s.js} +1 -1
- package/dist/client/assets/{chunk-OGEWGWER-G3kRomY-.js → chunk-OGEWGWER-CXz-hiqH.js} +1 -1
- package/dist/client/assets/{chunk-PUDLZKDR-DJw3XJhs.js → chunk-PUDLZKDR-DeKKZ45n.js} +1 -1
- package/dist/client/assets/{chunk-Q4XR5HBZ-BV5Bw0_D.js → chunk-Q4XR5HBZ-BfA-corw.js} +1 -1
- package/dist/client/assets/{chunk-V7JOEXUC-C2vxCA10.js → chunk-V7JOEXUC-DBArf2HI.js} +1 -1
- package/dist/client/assets/{chunk-VAUOI2AC-B2lAp2X6.js → chunk-VAUOI2AC-Ce5MjSpg.js} +1 -1
- package/dist/client/assets/{chunk-VR4S4FIN-Dk58Ba0X.js → chunk-VR4S4FIN-DUkeWBHv.js} +1 -1
- package/dist/client/assets/{chunk-WYO6CB5R-rhSewh5r.js → chunk-WYO6CB5R-5IIfqwS1.js} +1 -1
- package/dist/client/assets/{chunk-ZGVPDNZ5-C8pQspwU.js → chunk-ZGVPDNZ5-BVFUMmyX.js} +1 -1
- package/dist/client/assets/classDiagram-OUVF2IWQ-5dxJ_ejB.js +1 -0
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-5dxJ_ejB.js +1 -0
- package/dist/client/assets/{cs-CZ-2BRQDIVT-CMTTkdlc.js → cs-CZ-2BRQDIVT-BeWSN4Lg.js} +1 -1
- package/dist/client/assets/{railroad-3IZDKUUU-Cyefv0S0.js → cynefin-VYW2F7L2-BPoEGt5P.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-TSTJHNR4-BlF8b9qP.js → cynefinDiagram-TSTJHNR4-D-HGa5eC.js} +1 -1
- package/dist/client/assets/{da-DK-5WZEPLOC-BMtFOXTa.js → da-DK-5WZEPLOC-C7Kj8cSr.js} +1 -1
- package/dist/client/assets/{dagre-VKFMJZFB-DytIg2RQ.js → dagre-VKFMJZFB-DYJas6XO.js} +1 -1
- package/dist/client/assets/{de-DE-XR44H4JA-C2G_UWRS.js → de-DE-XR44H4JA-CGONhJum.js} +1 -1
- package/dist/client/assets/{diagram-FQU43EPY-BOqWKyO9.js → diagram-FQU43EPY-CovScBBf.js} +2 -2
- package/dist/client/assets/{diagram-G47NLZAW-1dP1jpC7.js → diagram-G47NLZAW-6_UOQ1JD.js} +1 -1
- package/dist/client/assets/{diagram-NH7WQ7WH-VyXFGKGb.js → diagram-NH7WQ7WH-DfM8Ux2D.js} +1 -1
- package/dist/client/assets/{diagram-OA4YK3LP-BP7GwNyd.js → diagram-OA4YK3LP-BFJDUTm_.js} +2 -2
- package/dist/client/assets/{diagram-WEI45ONY-DyHZtrRF.js → diagram-WEI45ONY-8OKtOSaq.js} +1 -1
- package/dist/client/assets/{dist-C_FPOqHa.js → dist-CBoHd3nF.js} +4 -4
- package/dist/client/assets/ebnfDiagram-CCIWWBDH-TBneTBs-.js +1 -0
- package/dist/client/assets/{el-GR-BZB4AONW-BTK70kle.js → el-GR-BZB4AONW-C9Q6-3JL.js} +1 -1
- package/dist/client/assets/{en-B4ZKOASM-DQDUvTjb.js → en-B4ZKOASM-DooiP2-J.js} +1 -1
- package/dist/client/assets/{erDiagram-Q63AITRT-CI8TMXqA.js → erDiagram-Q63AITRT-Dy5QBJCT.js} +1 -1
- package/dist/client/assets/{es-ES-U4NZUMDT-6TeZK11C.js → es-ES-U4NZUMDT-DKxT2wWX.js} +1 -1
- package/dist/client/assets/{eu-ES-A7QVB2H4-Cb0oNkmv.js → eu-ES-A7QVB2H4-DrKnZ3gY.js} +1 -1
- package/dist/client/assets/eventmodeling-45OFAUF4-DP9O5S3e.js +1 -0
- package/dist/client/assets/{fa-IR-HGAKTJCU-JYkLqShQ.js → fa-IR-HGAKTJCU-DjA2Px-T.js} +1 -1
- package/dist/client/assets/{fi-FI-Z5N7JZ37-u_gehdrx.js → fi-FI-Z5N7JZ37-NUghXbpa.js} +1 -1
- package/dist/client/assets/flowDiagram-23GEKE2U-CUBp7I9C.js +1 -0
- package/dist/client/assets/{fr-FR-RHASNOE6-CmE3ELbC.js → fr-FR-RHASNOE6-9Vmv2nhB.js} +1 -1
- package/dist/client/assets/{ganttDiagram-NO4QXBWP-CH13wSU6.js → ganttDiagram-NO4QXBWP-DNoDTMaW.js} +1 -1
- package/dist/client/assets/gitGraph-TEB2WS4Q-BdzEwYG8.js +1 -0
- package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-IpKqkdqX.js → gitGraphDiagram-IHSO6WYX-Coi-sbuV.js} +1 -1
- package/dist/client/assets/{gl-ES-HMX3MZ6V-Fy4K9BOx.js → gl-ES-HMX3MZ6V-CrTqlGTr.js} +1 -1
- package/dist/client/assets/{he-IL-6SHJWFNN-BtuHPbrL.js → he-IL-6SHJWFNN-BDoFv8vR.js} +1 -1
- package/dist/client/assets/{hi-IN-IWLTKZ5I-TEGNFf4N.js → hi-IN-IWLTKZ5I-DwqsXYOg.js} +1 -1
- package/dist/client/assets/{hu-HU-A5ZG7DT2-BAaPCJl5.js → hu-HU-A5ZG7DT2-Bfb8Cu1b.js} +1 -1
- package/dist/client/assets/{id-ID-SAP4L64H-DyuFpf3d.js → id-ID-SAP4L64H-DOW7LO7-.js} +1 -1
- package/dist/client/assets/image-GAAHSSAO-BGgn-PVN.js +1 -0
- package/dist/client/assets/index-oPO4_QxD.js +270 -0
- package/dist/client/assets/{index--u8Mf6T6.css → index-pqEtQj4K.css} +1 -1
- package/dist/client/assets/info-DKCQHKI2-DrYXVDvR.js +1 -0
- package/dist/client/assets/{infoDiagram-FWYZ7A6U-DbwYrIVA.js → infoDiagram-FWYZ7A6U-lZtFhAXP.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-DUKB4IOX.js → ishikawaDiagram-FXEZZL3T-BREj5_gD.js} +1 -1
- package/dist/client/assets/{it-IT-JPQ66NNP-DI0hWELN.js → it-IT-JPQ66NNP-Bgr9Cu8C.js} +1 -1
- package/dist/client/assets/{ja-JP-DBVTYXUO-BVDm3NlP.js → ja-JP-DBVTYXUO-BGNdWvdH.js} +1 -1
- package/dist/client/assets/{journeyDiagram-5HDEW3XC-CBla9cDa.js → journeyDiagram-5HDEW3XC-CMBikQPO.js} +1 -1
- package/dist/client/assets/{kaa-6HZHGXH3-BPmENbr7.js → kaa-6HZHGXH3-CRDlnQ9T.js} +1 -1
- package/dist/client/assets/{kab-KAB-ZGHBKWFO-SJCSLUAj.js → kab-KAB-ZGHBKWFO-C4Lqev4p.js} +1 -1
- package/dist/client/assets/{kanban-definition-HUTT4EX6-DF40bon8.js → kanban-definition-HUTT4EX6-BWBx3j_A.js} +1 -1
- package/dist/client/assets/{kk-KZ-P5N5QNE5-iO6ccQA0.js → kk-KZ-P5N5QNE5-DgFr17Od.js} +1 -1
- package/dist/client/assets/{km-KH-HSX4SM5Z-DaeRmR92.js → km-KH-HSX4SM5Z-BDvXuwGA.js} +1 -1
- package/dist/client/assets/{ko-KR-MTYHY66A-BbIUlDG8.js → ko-KR-MTYHY66A-BNhHcL3I.js} +1 -1
- package/dist/client/assets/{ku-TR-6OUDTVRD-mV8MrK_d.js → ku-TR-6OUDTVRD-DNktxnYd.js} +1 -1
- package/dist/client/assets/{line-Cyy-k4TY.js → line-Dt0OF9ws.js} +1 -1
- package/dist/client/assets/{lt-LT-XHIRWOB4-NGxzPcvJ.js → lt-LT-XHIRWOB4-aRviZ0MH.js} +1 -1
- package/dist/client/assets/{lv-LV-5QDEKY6T-BSIwo-WO.js → lv-LV-5QDEKY6T-CoVYcDKN.js} +1 -1
- package/dist/client/assets/mermaid-parser.core-PdKOsWiX.js +7 -0
- package/dist/client/assets/{mindmap-definition-LN4V7U3C-BcAHqIrw.js → mindmap-definition-LN4V7U3C-CQ5v-EBF.js} +1 -1
- package/dist/client/assets/{mr-IN-CRQNXWMA-DMqRrESd.js → mr-IN-CRQNXWMA-BxQJIhtJ.js} +1 -1
- package/dist/client/assets/{my-MM-5M5IBNSE-BU9rr6eQ.js → my-MM-5M5IBNSE-FhM1FFVw.js} +1 -1
- package/dist/client/assets/{nb-NO-T6EIAALU-CfCFCnvr.js → nb-NO-T6EIAALU-CU26LQ4M.js} +1 -1
- package/dist/client/assets/{nl-NL-IS3SIHDZ-BDDDlrXW.js → nl-NL-IS3SIHDZ-DEbkQpIZ.js} +1 -1
- package/dist/client/assets/{nn-NO-6E72VCQL-DxXyaKak.js → nn-NO-6E72VCQL-DTXzh0og.js} +1 -1
- package/dist/client/assets/{oc-FR-POXYY2M6-DhEINSYs.js → oc-FR-POXYY2M6-BMWu-GuX.js} +1 -1
- package/dist/client/assets/{pa-IN-N4M65BXN-CK7mHZv5.js → pa-IN-N4M65BXN-BvvaU4wr.js} +1 -1
- package/dist/client/assets/{treemap-6X3UGDF4-BDCwJXtu.js → packet-7NZHBO7P-D3npuWOU.js} +1 -1
- package/dist/client/assets/pegDiagram-2B236MQR-BRo6DMPk.js +1 -0
- package/dist/client/assets/percentages-BXMCSKIN-EXL0wbvf.js +1 -0
- package/dist/client/assets/{wardley-OPB4EBWU-DyOUx8-a.js → pie-RZYD4A2V-CNkV5sKG.js} +1 -1
- package/dist/client/assets/{pieDiagram-ENE6RG2P-BLDvuItJ.js → pieDiagram-ENE6RG2P-DjyEljFW.js} +1 -1
- package/dist/client/assets/{pl-PL-T2D74RX3-CqscU5Ri.js → pl-PL-T2D74RX3-Q4-sfWh2.js} +1 -1
- package/dist/client/assets/{pt-BR-5N22H2LF-DmaMKyvD.js → pt-BR-5N22H2LF-D3I0MlSt.js} +1 -1
- package/dist/client/assets/{pt-PT-UZXXM6DQ-DF4Iue14.js → pt-PT-UZXXM6DQ-CjvJgWuJ.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-G7yFHj4A.js → quadrantDiagram-ABIIQ3AL-DwPjmUqM.js} +1 -1
- package/dist/client/assets/{cynefin-VYW2F7L2-D4wuR1xh.js → radar-I7S5WNFK-BUDPffFb.js} +1 -1
- package/dist/client/assets/{gitGraph-TEB2WS4Q-g2g2G5VS.js → railroad-3IZDKUUU-Cdo3kV8g.js} +1 -1
- package/dist/client/assets/railroad-abnf-AHOZXSZD-DhwVR0O6.js +1 -0
- package/dist/client/assets/railroad-ebnf-EBAXGLYW-BH-sR6KG.js +1 -0
- package/dist/client/assets/railroad-peg-LSFZ7HO6-DNVw0v5I.js +1 -0
- package/dist/client/assets/railroadDiagram-RFXS5EU6-DM4LPeTp.js +1 -0
- package/dist/client/assets/{requirementDiagram-TGXJPOKE-C9A-HrEu.js → requirementDiagram-TGXJPOKE-BgufYhbt.js} +1 -1
- package/dist/client/assets/{ro-RO-JPDTUUEW-fRWAU3yw.js → ro-RO-JPDTUUEW-DTqaPOB6.js} +1 -1
- package/dist/client/assets/{ru-RU-B4JR7IUQ-CKPt5MqY.js → ru-RU-B4JR7IUQ-DGLVQl1a.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-HTMAVEWB-exIXTcGE.js → sankeyDiagram-HTMAVEWB-B1Sjq8RS.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-aDjop-R8.js → sequenceDiagram-DBY2YBRQ-D5SV4V4W.js} +1 -1
- package/dist/client/assets/{si-LK-N5RQ5JYF-MDsRqHY9.js → si-LK-N5RQ5JYF-C3gSdqxC.js} +1 -1
- package/dist/client/assets/{sk-SK-C5VTKIMK-CRZETqXz.js → sk-SK-C5VTKIMK-Bg1sgW2y.js} +1 -1
- package/dist/client/assets/{sl-SI-NN7IZMDC-CXfLqNoN.js → sl-SI-NN7IZMDC-5tRgzcvI.js} +1 -1
- package/dist/client/assets/{stateDiagram-2N3HPSRC-y0Ml_ZQw.js → stateDiagram-2N3HPSRC-BDd2Qyke.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-Dc9mjKnL.js +1 -0
- package/dist/client/assets/subset-shared.chunk-CBqF3lLT.js +1 -0
- package/dist/client/assets/{subset-worker.chunk-DbYO8wJu.js → subset-worker.chunk-kFoGWzk5.js} +1 -1
- package/dist/client/assets/{sv-SE-XGPEYMSR-BC6B5BtV.js → sv-SE-XGPEYMSR-BOzuSEwa.js} +1 -1
- package/dist/client/assets/{swimlanes-5IMT3BWC-CYWdivj3.js → swimlanes-5IMT3BWC-DjFw-CEo.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-DxdVR5MZ.js +8 -0
- package/dist/client/assets/{ta-IN-2NMHFXQM-DilUfcfF.js → ta-IN-2NMHFXQM-C7WRODt_.js} +1 -1
- package/dist/client/assets/{th-TH-HPSO5L25-BaInGJjE.js → th-TH-HPSO5L25-WFuWcN58.js} +1 -1
- package/dist/client/assets/{timeline-definition-FHXFAJF6-zAb82GBx.js → timeline-definition-FHXFAJF6-BItaRl8g.js} +1 -1
- package/dist/client/assets/{tr-TR-DEFEU3FU-oygIet1p.js → tr-TR-DEFEU3FU-DtSAkhUR.js} +1 -1
- package/dist/client/assets/{treeView-QDETBFTQ-sU-avi1O.js → treeView-QDETBFTQ-BsqpkMak.js} +1 -1
- package/dist/client/assets/treemap-6X3UGDF4-CF2ZChjy.js +1 -0
- package/dist/client/assets/{uk-UA-QMV73CPH-QqCQ4UX-.js → uk-UA-QMV73CPH-BLNYCDf-.js} +1 -1
- package/dist/client/assets/{vennDiagram-L72KCM5P-BXrsZk41.js → vennDiagram-L72KCM5P-DkVOQsDM.js} +1 -1
- package/dist/client/assets/{vi-VN-M7AON7JQ-yJDC_vY8.js → vi-VN-M7AON7JQ-CC-oykOI.js} +1 -1
- package/dist/client/assets/wardley-OPB4EBWU-BfqiNa2m.js +1 -0
- package/dist/client/assets/{wardleyDiagram-EHGQE667-DlOqjfHt.js → wardleyDiagram-EHGQE667-C7jTfbZa.js} +1 -1
- package/dist/client/assets/{xychartDiagram-FW5EYKEG-BYm9TaM8.js → xychartDiagram-FW5EYKEG-KJVcpo2q.js} +1 -1
- package/dist/client/assets/{zh-CN-LNUGB5OW-BNjW-fP_.js → zh-CN-LNUGB5OW-BpxSN9jo.js} +1 -1
- package/dist/client/assets/{zh-HK-E62DVLB3-apDiW2t-.js → zh-HK-E62DVLB3-BVqdbOUX.js} +1 -1
- package/dist/client/assets/{zh-TW-RAJ6MFWO-qAMfxdUZ.js → zh-TW-RAJ6MFWO-c__UZRJ7.js} +1 -1
- package/dist/client/index.html +2 -2
- package/package.json +74 -69
- package/dist/client/assets/abnfDiagram-VRR7QNED-D5qnskik.js +0 -1
- package/dist/client/assets/architecture-TIHT7OUA-Bj5GS0Ct.js +0 -1
- package/dist/client/assets/channel-B0WxnXxi.js +0 -1
- package/dist/client/assets/classDiagram-OUVF2IWQ-Dnwqjkgm.js +0 -1
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-Dnwqjkgm.js +0 -1
- package/dist/client/assets/ebnfDiagram-CCIWWBDH-Bitxc5e_.js +0 -1
- package/dist/client/assets/eventmodeling-45OFAUF4-CTwqsmD_.js +0 -1
- package/dist/client/assets/flowDiagram-23GEKE2U-BZYDBy9C.js +0 -1
- package/dist/client/assets/image-GAAHSSAO-tSmyz8fT.js +0 -1
- package/dist/client/assets/index-BkkP6_3-.js +0 -270
- package/dist/client/assets/info-DKCQHKI2-DjHPtgDy.js +0 -1
- package/dist/client/assets/mermaid-parser.core-BC7y6sOJ.js +0 -7
- package/dist/client/assets/packet-7NZHBO7P-BxQG27fi.js +0 -1
- package/dist/client/assets/pegDiagram-2B236MQR-6m6GI5bN.js +0 -1
- package/dist/client/assets/percentages-BXMCSKIN-BuLIaCEd.js +0 -1
- package/dist/client/assets/pie-RZYD4A2V-DrlUa6Jm.js +0 -1
- package/dist/client/assets/radar-I7S5WNFK-DB1qIDmZ.js +0 -1
- package/dist/client/assets/railroad-abnf-AHOZXSZD-BkviW5Tj.js +0 -1
- package/dist/client/assets/railroad-ebnf-EBAXGLYW-CXg6HJd6.js +0 -1
- package/dist/client/assets/railroad-peg-LSFZ7HO6-BgTAGb1l.js +0 -1
- package/dist/client/assets/railroadDiagram-RFXS5EU6-BvUGw21O.js +0 -1
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-D8dyI3My.js +0 -1
- package/dist/client/assets/subset-shared.chunk-BTjBJrZm.js +0 -1
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-CdLCcze0.js +0 -8
package/README.md
CHANGED
|
@@ -32,6 +32,51 @@ contains artifacts — scaffolded by `openspec new change` or hand-written — t
|
|
|
32
32
|
baseline: generation makes the **smallest revision** that fulfills the drawing, leaving
|
|
33
33
|
unimplicated files byte-identical.
|
|
34
34
|
|
|
35
|
+
### File references: `@<path | filename>`
|
|
36
|
+
|
|
37
|
+
Anywhere you type — the architecture title, text on the canvas (labels and loose notes),
|
|
38
|
+
or the review chat — an `@` reference pulls a real file into the model's context, so the
|
|
39
|
+
generated OpenSpec is grounded in your actual code instead of guesses:
|
|
40
|
+
|
|
41
|
+
- `@server/app.ts` — a path relative to the directory you launched `specsketch` from.
|
|
42
|
+
- `@schema.ts` — a bare filename; the tree is searched (skipping `.git`, `node_modules`,
|
|
43
|
+
`dist`) and the shallowest match wins. Multiple matches are noted in the context.
|
|
44
|
+
- `@src/ui` or `@src/ui/` — a **directory**; its files (recursively, up to 50 files and
|
|
45
|
+
the size budgets) are all pulled into context, each reported individually. Oversized
|
|
46
|
+
directories include what fits and note what was omitted.
|
|
47
|
+
|
|
48
|
+
Typing `@` in the chat composer or the system prompt editor opens an **inline search**
|
|
49
|
+
over that same scope — files and directories, filtered as you type; arrows + Enter/Tab
|
|
50
|
+
(or a click) select, Escape dismisses. Selecting a directory inserts `@dir/` and keeps
|
|
51
|
+
the search open scoped to it: stop there to reference the whole directory, or keep
|
|
52
|
+
typing to drill down to a file.
|
|
53
|
+
|
|
54
|
+
References are scoped to the launch directory: absolute paths, `..`, and symlinks that
|
|
55
|
+
escape it are refused. Large files truncate at 64KB (256KB across all references). An
|
|
56
|
+
unresolvable reference never fails generation or chat — it degrades to a "could not be
|
|
57
|
+
resolved" note in the context, and the chat pane lists which files resolved and which
|
|
58
|
+
didn't under each answer.
|
|
59
|
+
|
|
60
|
+
### The spec review pane: Spec / System Prompt / Chat
|
|
61
|
+
|
|
62
|
+
The right-hand panel has a menu with three options:
|
|
63
|
+
|
|
64
|
+
- **Spec** — the generated artifacts (summary, proposal, design, tasks, capability specs),
|
|
65
|
+
exactly what the panel showed before.
|
|
66
|
+
- **System Prompt** — view *and edit* the prompt that drives generation. Saved edits apply
|
|
67
|
+
to every subsequent generation and persist with the change directory (`specsketch.json`);
|
|
68
|
+
**Reset** restores the built-in default. `@` references inside the prompt resolve like
|
|
69
|
+
any other input, so you can pin conventions with `@docs/style.md`.
|
|
70
|
+
- **Chat** — available once a spec exists. Ask questions about the generated OpenSpec
|
|
71
|
+
(answers are grounded in the artifacts on disk), pull files in with `@` references, and
|
|
72
|
+
iterate:
|
|
73
|
+
- **Regenerate** (header, next to Generate Spec) re-runs generation with the conversation
|
|
74
|
+
as extra context — your corrections in chat become requirements for the next pass.
|
|
75
|
+
- **Clear** (in the pane) discards the conversation and starts over.
|
|
76
|
+
- Every generation resets the chat and seeds it with an AI-written summary of the prior
|
|
77
|
+
conversation and what changed on disk in that generation — context stays bounded, the
|
|
78
|
+
thread of decisions survives. The chat persists in `specsketch.json` across restarts.
|
|
79
|
+
|
|
35
80
|
### Requirements & auth
|
|
36
81
|
|
|
37
82
|
- **Node ≥ 22** (the CLI checks at startup).
|
|
@@ -47,7 +92,7 @@ unimplicated files byte-identical.
|
|
|
47
92
|
### CLI reference
|
|
48
93
|
|
|
49
94
|
```
|
|
50
|
-
specsketch <path-to-openspec-change-dir> [--port <n>]
|
|
95
|
+
specsketch <path-to-openspec-change-dir> [--port <n>] [--share]
|
|
51
96
|
```
|
|
52
97
|
|
|
53
98
|
- The directory is created if it doesn't exist; its basename becomes the change name.
|
|
@@ -55,15 +100,46 @@ specsketch <path-to-openspec-change-dir> [--port <n>]
|
|
|
55
100
|
specsketch session is running — the server moves to the next available port and the
|
|
56
101
|
printed URL reflects the one actually bound. Binds to 127.0.0.1 exclusively — there is
|
|
57
102
|
no `--host`.
|
|
103
|
+
- `--share` hosts the canvas as a live multiplayer session (see below).
|
|
58
104
|
- **Model picker** (top bar): `claude-opus-4-8` (default), `claude-sonnet-5`, or
|
|
59
105
|
`claude-fable-5`. The choice is saved with the change directory. Fable runs with
|
|
60
106
|
server-side refusal fallbacks to Opus and requires your org to allow 30-day data
|
|
61
107
|
retention.
|
|
62
108
|
|
|
109
|
+
### Shared sessions (`--share`)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
specsketch login # once per machine
|
|
113
|
+
specsketch ./openspec/changes/new-feature-change --share
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`--share` creates a multiplayer session on your CoopCLI account and prints a link like
|
|
117
|
+
`https://coopcli.com/products/specsketch/s/<id>?k=<token>`. Coworkers open it in a plain
|
|
118
|
+
browser — **no account, no install** — see the live canvas, and can draw on it; their
|
|
119
|
+
edits stream back and land in `diagram.excalidraw` like your own. The top bar shows a
|
|
120
|
+
live pill with the participant count and a copy-link button.
|
|
121
|
+
|
|
122
|
+
How it hangs together:
|
|
123
|
+
|
|
124
|
+
- The host needs a CoopCLI account (`specsketch login` — opens a browser, saves
|
|
125
|
+
credentials to `~/.coopcli/config.json`, the same file `coop login` writes); guests never do. The link
|
|
126
|
+
itself is the capability: anyone holding it can view **and edit** until the session
|
|
127
|
+
ends. The server stores only a hash of the link token.
|
|
128
|
+
- The local server still binds to 127.0.0.1 only — sharing runs over a single outbound
|
|
129
|
+
connection from the CLI to `api.coopcli.com` (a per-session Durable Object). Your
|
|
130
|
+
CoopCLI API key never reaches any browser.
|
|
131
|
+
- Concurrent edits resolve per element, last-write-wins — the same scheme Excalidraw's
|
|
132
|
+
own collab server uses. The change directory on the host remains the durable copy.
|
|
133
|
+
- Connections heal themselves (heartbeat + reconnect with backoff); a brief
|
|
134
|
+
"reconnecting…" pill is normal during deploys.
|
|
135
|
+
- **Ctrl-C ends the session and invalidates the link.** Idle sessions expire server-side
|
|
136
|
+
after 24 h.
|
|
137
|
+
|
|
63
138
|
### Troubleshooting
|
|
64
139
|
|
|
65
140
|
| Symptom | Fix |
|
|
66
141
|
|---|---|
|
|
142
|
+
| `sh: specsketch: command not found` from `npx` **inside this repo** | This repo *is* `@coopcli/specsketch`, so npx resolves to the local checkout (which has no bin link) instead of the registry. Use `npm run cli -- ./openspec/changes/<name>`, or run npx from any other directory |
|
|
67
143
|
| `npm error 404 @coopcli/specsketch not found` right after a release | Registry propagation lag — retry in a minute or two |
|
|
68
144
|
| Startup warning "No Anthropic credentials detected" | Set `ANTHROPIC_API_KEY` or run `ant auth login`, then restart |
|
|
69
145
|
| Generate fails with a 401 / "anthropic-auth" | Same as above — the server found no credentials, or the login profile expired (`ant auth status`) |
|
|
@@ -127,7 +203,9 @@ a validated `SpecBundle` (`src/lib/schema.ts`), rendered as browsable artifacts.
|
|
|
127
203
|
## Getting started (local MVP)
|
|
128
204
|
|
|
129
205
|
Contributor flow for this repo (the published CLI above is built from the same code —
|
|
130
|
-
`npm run
|
|
206
|
+
`npm run cli -- <change-dir>` builds and runs it from source; don't use
|
|
207
|
+
`npx @coopcli/specsketch` inside this repo, since npx resolves the name to the local
|
|
208
|
+
checkout instead of the registry).
|
|
131
209
|
|
|
132
210
|
```bash
|
|
133
211
|
npm install
|