@joshuafolkken/kit 1.872.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/.claude/.claude-plugin/plugin.json +11 -0
- package/.claude/settings.json +110 -0
- package/.claude/skills/dependency-update/SKILL.md +76 -0
- package/.claude/skills/epic-commands/SKILL.md +463 -0
- package/.claude/skills/verify-ui/SKILL.md +96 -0
- package/.claude/skills/workflow-commands/SKILL.md +265 -0
- package/.claude/skills/workflow-commands/background-commands.md +130 -0
- package/.claude/skills/workflow-commands/backlogrun-child.md +364 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +345 -0
- package/.claude/skills/workflow-commands/backlogrun-park.md +179 -0
- package/.claude/skills/workflow-commands/backlogrun-progress.md +600 -0
- package/.claude/skills/workflow-commands/backlogrun-steps.md +604 -0
- package/.claude/skills/workflow-commands/backlogrun.md +109 -0
- package/.claude/skills/workflow-commands/chain-rule.md +98 -0
- package/.claude/skills/workflow-commands/delegation.md +52 -0
- package/.claude/skills/workflow-commands/followup-reference.md +118 -0
- package/.claude/skills/workflow-commands/followup.md +222 -0
- package/.claude/skills/workflow-commands/fullrun-steps.md +93 -0
- package/.claude/skills/workflow-commands/fullrun.md +82 -0
- package/.claude/skills/workflow-commands/halfrun.md +73 -0
- package/.claude/skills/workflow-commands/into-target.md +48 -0
- package/.claude/skills/workflow-commands/issue-comments.md +109 -0
- package/.claude/skills/workflow-commands/issue-fold-existing.md +27 -0
- package/.claude/skills/workflow-commands/issue-scout.md +45 -0
- package/.claude/skills/workflow-commands/kickoff.md +82 -0
- package/.claude/skills/workflow-commands/latest-gate.md +85 -0
- package/.claude/skills/workflow-commands/needs-human-review.md +64 -0
- package/.claude/skills/workflow-commands/observation-filing.md +349 -0
- package/.claude/skills/workflow-commands/pre-gate-cut.md +340 -0
- package/.claude/skills/workflow-commands/prerequisite.md +62 -0
- package/.claude/skills/workflow-commands/retrospective.md +81 -0
- package/.claude/skills/workflow-commands/rule-residency.md +267 -0
- package/.claude/skills/workflow-commands/split-assessment.md +130 -0
- package/.claude/skills/workflow-commands/target-repository.md +58 -0
- package/.claude/skills/workflow-commands/working-tree-hold.md +66 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.coderabbit.yaml +50 -0
- package/.codex/config.toml +8 -0
- package/.codex/hooks.json +71 -0
- package/.cursorrules +45 -0
- package/.gitattributes +7 -0
- package/.github/dependabot.yml +19 -0
- package/.github/pull_request_template.md +1 -0
- package/.github/release.yml +18 -0
- package/.github/workflows/auto-tag.yml +111 -0
- package/.github/workflows/ci.yml +681 -0
- package/.github/workflows/dependabot-auto-merge.yml +55 -0
- package/.github/workflows/production.yml +47 -0
- package/.github/workflows/publish.yml +39 -0
- package/.github/workflows/sonar-qube.yml +34 -0
- package/.mcp.json +8 -0
- package/.ncurc.json +3 -0
- package/.prettierignore +20 -0
- package/.vscode/extensions.json +21 -0
- package/.vscode/settings.json +41 -0
- package/AGENTS.md +29 -0
- package/CLAUDE.md +207 -0
- package/CODE_OF_CONDUCT.md +132 -0
- package/GEMINI.md +30 -0
- package/LICENSE +21 -0
- package/README.md +41 -0
- package/SECURITY.md +34 -0
- package/cspell/index.yaml +177 -0
- package/dist/CLAUDE.md +207 -0
- package/dist/config-merge/index.d.ts +29 -0
- package/dist/config-merge/index.js +459 -0
- package/dist/hooks/batch-guard.js +28 -0
- package/dist/hooks/chunk-25JL6FMS.js +4970 -0
- package/dist/hooks/chunk-2ANGT3XM.js +375 -0
- package/dist/hooks/chunk-2EI5GBSW.js +42 -0
- package/dist/hooks/chunk-2OT5XE2N.js +5014 -0
- package/dist/hooks/chunk-2RUPMGGV.js +137 -0
- package/dist/hooks/chunk-2XIGZQMQ.js +3299 -0
- package/dist/hooks/chunk-33ELOKEV.js +910 -0
- package/dist/hooks/chunk-33YRTKM7.js +230 -0
- package/dist/hooks/chunk-36JQU5NN.js +77 -0
- package/dist/hooks/chunk-3EJBTWVS.js +1769 -0
- package/dist/hooks/chunk-3FK5SFAC.js +432 -0
- package/dist/hooks/chunk-3PWPYDD2.js +240 -0
- package/dist/hooks/chunk-3TQU7TDH.js +375 -0
- package/dist/hooks/chunk-3TVLSFZ6.js +432 -0
- package/dist/hooks/chunk-3VXYCB4E.js +77 -0
- package/dist/hooks/chunk-44M6JXGV.js +3398 -0
- package/dist/hooks/chunk-46EEEHC3.js +240 -0
- package/dist/hooks/chunk-4A7UVP2P.js +364 -0
- package/dist/hooks/chunk-4LFQEZS4.js +137 -0
- package/dist/hooks/chunk-4OCX3V2T.js +469 -0
- package/dist/hooks/chunk-4OHA5DE7.js +49 -0
- package/dist/hooks/chunk-4PMDW3YD.js +68 -0
- package/dist/hooks/chunk-4QHBNAI4.js +68 -0
- package/dist/hooks/chunk-4SSB3FEE.js +3273 -0
- package/dist/hooks/chunk-5A2WQ2CQ.js +5390 -0
- package/dist/hooks/chunk-5EVA2JQB.js +5390 -0
- package/dist/hooks/chunk-5P7VF5VE.js +3230 -0
- package/dist/hooks/chunk-5QWJGGZP.js +49 -0
- package/dist/hooks/chunk-5U5EZYG6.js +77 -0
- package/dist/hooks/chunk-5VUUF3ZV.js +240 -0
- package/dist/hooks/chunk-5WA7UBT3.js +374 -0
- package/dist/hooks/chunk-6EBGRQ3Q.js +301 -0
- package/dist/hooks/chunk-6TVHWMD3.js +432 -0
- package/dist/hooks/chunk-6V5OPIUU.js +13 -0
- package/dist/hooks/chunk-6VAGLEMB.js +68 -0
- package/dist/hooks/chunk-75BTXKFJ.js +3424 -0
- package/dist/hooks/chunk-75RHN67S.js +137 -0
- package/dist/hooks/chunk-76KC3BDD.js +3414 -0
- package/dist/hooks/chunk-76SLS7CZ.js +898 -0
- package/dist/hooks/chunk-7DHZ4DWT.js +5015 -0
- package/dist/hooks/chunk-7INSJDGE.js +458 -0
- package/dist/hooks/chunk-7VJ4FTDX.js +268 -0
- package/dist/hooks/chunk-7XCYNHQK.js +77 -0
- package/dist/hooks/chunk-A5YJ3H7E.js +375 -0
- package/dist/hooks/chunk-AAEXXUUL.js +268 -0
- package/dist/hooks/chunk-ABVEVV2M.js +432 -0
- package/dist/hooks/chunk-ACN3YXFL.js +68 -0
- package/dist/hooks/chunk-AD3XE3QZ.js +397 -0
- package/dist/hooks/chunk-AENFZPZH.js +230 -0
- package/dist/hooks/chunk-AFKRFQ6W.js +68 -0
- package/dist/hooks/chunk-AHD5IPWI.js +375 -0
- package/dist/hooks/chunk-AMK5JGV7.js +77 -0
- package/dist/hooks/chunk-ARN7NCQI.js +425 -0
- package/dist/hooks/chunk-AUFY653N.js +3425 -0
- package/dist/hooks/chunk-AXQBNFEF.js +375 -0
- package/dist/hooks/chunk-AYC7R6U4.js +3316 -0
- package/dist/hooks/chunk-AYEA2FJ7.js +5015 -0
- package/dist/hooks/chunk-B2LIXYFL.js +77 -0
- package/dist/hooks/chunk-B4HPNY2I.js +375 -0
- package/dist/hooks/chunk-B4YNCUGB.js +469 -0
- package/dist/hooks/chunk-B57S3VWT.js +922 -0
- package/dist/hooks/chunk-BINZ3PLI.js +364 -0
- package/dist/hooks/chunk-BIWLABFK.js +432 -0
- package/dist/hooks/chunk-BODUSXKK.js +410 -0
- package/dist/hooks/chunk-BQBAT2YK.js +375 -0
- package/dist/hooks/chunk-BUJEBW75.js +391 -0
- package/dist/hooks/chunk-BVNWORKA.js +72 -0
- package/dist/hooks/chunk-BWI47LQS.js +5205 -0
- package/dist/hooks/chunk-C25HRMJX.js +137 -0
- package/dist/hooks/chunk-CBFZNC74.js +375 -0
- package/dist/hooks/chunk-CECYXS4Y.js +3424 -0
- package/dist/hooks/chunk-CELGUP5F.js +49 -0
- package/dist/hooks/chunk-CMHANU3F.js +3442 -0
- package/dist/hooks/chunk-CMN372LI.js +68 -0
- package/dist/hooks/chunk-CPGZLMMK.js +3299 -0
- package/dist/hooks/chunk-CTQKXDC7.js +268 -0
- package/dist/hooks/chunk-CYAT4RIT.js +68 -0
- package/dist/hooks/chunk-CYTWYCH2.js +5014 -0
- package/dist/hooks/chunk-CZSOLRBA.js +77 -0
- package/dist/hooks/chunk-D2PIDYJR.js +3438 -0
- package/dist/hooks/chunk-DE57HI6T.js +137 -0
- package/dist/hooks/chunk-DGXDGAPG.js +5306 -0
- package/dist/hooks/chunk-DNYRSYQG.js +5014 -0
- package/dist/hooks/chunk-DTAXH2A2.js +240 -0
- package/dist/hooks/chunk-E2IZUWI5.js +375 -0
- package/dist/hooks/chunk-E4L2K2BL.js +397 -0
- package/dist/hooks/chunk-E55NKX5F.js +68 -0
- package/dist/hooks/chunk-ECXVCCVD.js +3079 -0
- package/dist/hooks/chunk-EPHO443D.js +68 -0
- package/dist/hooks/chunk-EUFK2BI2.js +375 -0
- package/dist/hooks/chunk-EYCD5ZAV.js +137 -0
- package/dist/hooks/chunk-F2SDYJU4.js +240 -0
- package/dist/hooks/chunk-F4B5D5TF.js +68 -0
- package/dist/hooks/chunk-FGEO3NDX.js +432 -0
- package/dist/hooks/chunk-FJYI52RE.js +137 -0
- package/dist/hooks/chunk-FXAKJKTB.js +18 -0
- package/dist/hooks/chunk-FYTZHIY4.js +3085 -0
- package/dist/hooks/chunk-G7JL2A5K.js +375 -0
- package/dist/hooks/chunk-GA3ITDBW.js +42 -0
- package/dist/hooks/chunk-GDR4H4SV.js +469 -0
- package/dist/hooks/chunk-GFKDXPSM.js +2855 -0
- package/dist/hooks/chunk-GIMRTKFU.js +566 -0
- package/dist/hooks/chunk-GOPHRLGO.js +240 -0
- package/dist/hooks/chunk-GX4HO7SJ.js +230 -0
- package/dist/hooks/chunk-GXKKK23T.js +240 -0
- package/dist/hooks/chunk-GZ6FUVIK.js +566 -0
- package/dist/hooks/chunk-H5HPY5M5.js +2869 -0
- package/dist/hooks/chunk-HCF3OGEE.js +1829 -0
- package/dist/hooks/chunk-HDEXAOUM.js +469 -0
- package/dist/hooks/chunk-HM2TY3TN.js +469 -0
- package/dist/hooks/chunk-HOA7NXA2.js +55 -0
- package/dist/hooks/chunk-HOFEWH6H.js +240 -0
- package/dist/hooks/chunk-HUUI6S5J.js +2669 -0
- package/dist/hooks/chunk-I4D3NVUD.js +469 -0
- package/dist/hooks/chunk-I4Q6WAJE.js +68 -0
- package/dist/hooks/chunk-IB6N4CR2.js +432 -0
- package/dist/hooks/chunk-IFLDYJMD.js +469 -0
- package/dist/hooks/chunk-IGU466YD.js +77 -0
- package/dist/hooks/chunk-IJCQUHKY.js +375 -0
- package/dist/hooks/chunk-IKUMBDJB.js +230 -0
- package/dist/hooks/chunk-IM3BDIBJ.js +5005 -0
- package/dist/hooks/chunk-IMYMAODK.js +3431 -0
- package/dist/hooks/chunk-IN2ZVGXA.js +5005 -0
- package/dist/hooks/chunk-ITVJ2MKQ.js +18 -0
- package/dist/hooks/chunk-J5RIJYTM.js +2669 -0
- package/dist/hooks/chunk-JFLMH4K5.js +3460 -0
- package/dist/hooks/chunk-JR25IFML.js +77 -0
- package/dist/hooks/chunk-JT5AUXFI.js +432 -0
- package/dist/hooks/chunk-JY5YVN6N.js +3234 -0
- package/dist/hooks/chunk-K5Q4ETVI.js +391 -0
- package/dist/hooks/chunk-K67V2F24.js +137 -0
- package/dist/hooks/chunk-KABG6AEW.js +3460 -0
- package/dist/hooks/chunk-KATZESEC.js +3273 -0
- package/dist/hooks/chunk-KFH4H7W7.js +469 -0
- package/dist/hooks/chunk-KMUEI6RX.js +910 -0
- package/dist/hooks/chunk-KMV4OY77.js +3438 -0
- package/dist/hooks/chunk-KQAZNWEY.js +137 -0
- package/dist/hooks/chunk-KZZR6JER.js +5015 -0
- package/dist/hooks/chunk-LAR6DREP.js +77 -0
- package/dist/hooks/chunk-LNCJWEZD.js +5015 -0
- package/dist/hooks/chunk-LRYD2GLM.js +6 -0
- package/dist/hooks/chunk-LXBKYHDV.js +77 -0
- package/dist/hooks/chunk-LYLKIUNE.js +5024 -0
- package/dist/hooks/chunk-LZKCFOVC.js +432 -0
- package/dist/hooks/chunk-M4FCIYRI.js +77 -0
- package/dist/hooks/chunk-M5M7327Q.js +3425 -0
- package/dist/hooks/chunk-MF72MHSX.js +3455 -0
- package/dist/hooks/chunk-MK56LKDO.js +397 -0
- package/dist/hooks/chunk-N3MJADY7.js +240 -0
- package/dist/hooks/chunk-NFQSUDBN.js +458 -0
- package/dist/hooks/chunk-NHREKY45.js +137 -0
- package/dist/hooks/chunk-NP5TTAAW.js +375 -0
- package/dist/hooks/chunk-NQTLTKTJ.js +2993 -0
- package/dist/hooks/chunk-NVRCZPBZ.js +391 -0
- package/dist/hooks/chunk-O46HMMLJ.js +469 -0
- package/dist/hooks/chunk-OFJGH2L4.js +240 -0
- package/dist/hooks/chunk-OLFMCZH5.js +240 -0
- package/dist/hooks/chunk-OMCZS46I.js +49 -0
- package/dist/hooks/chunk-OQZEZW5G.js +469 -0
- package/dist/hooks/chunk-P2MDAT2Y.js +1897 -0
- package/dist/hooks/chunk-P3M2JJIF.js +68 -0
- package/dist/hooks/chunk-PDVHQITQ.js +3453 -0
- package/dist/hooks/chunk-PNT2AMDH.js +391 -0
- package/dist/hooks/chunk-PR2LVSY6.js +3445 -0
- package/dist/hooks/chunk-PRR5R4JK.js +137 -0
- package/dist/hooks/chunk-PXT44QVN.js +566 -0
- package/dist/hooks/chunk-PZLWJLAP.js +469 -0
- package/dist/hooks/chunk-Q2FEAZJ2.js +77 -0
- package/dist/hooks/chunk-Q32WETDO.js +3265 -0
- package/dist/hooks/chunk-Q45DUBLE.js +3600 -0
- package/dist/hooks/chunk-Q7NZSWQ5.js +240 -0
- package/dist/hooks/chunk-QH2JNAMK.js +3085 -0
- package/dist/hooks/chunk-QNNWYQ2R.js +375 -0
- package/dist/hooks/chunk-QPU5H2OS.js +68 -0
- package/dist/hooks/chunk-QRAHZ5TO.js +1829 -0
- package/dist/hooks/chunk-QUZ5HPIE.js +469 -0
- package/dist/hooks/chunk-QVCRG34O.js +2893 -0
- package/dist/hooks/chunk-R3MY4E3S.js +1675 -0
- package/dist/hooks/chunk-R6TXJJXP.js +77 -0
- package/dist/hooks/chunk-REJU6VT7.js +1829 -0
- package/dist/hooks/chunk-REQAQLRC.js +2993 -0
- package/dist/hooks/chunk-RFCXPAHH.js +391 -0
- package/dist/hooks/chunk-RHI6Y22X.js +137 -0
- package/dist/hooks/chunk-RKZVOBBS.js +469 -0
- package/dist/hooks/chunk-RL57TT2Y.js +566 -0
- package/dist/hooks/chunk-RORDOD4S.js +3321 -0
- package/dist/hooks/chunk-RZKYW5P2.js +77 -0
- package/dist/hooks/chunk-SJPJ6VSI.js +391 -0
- package/dist/hooks/chunk-SKSIJQQQ.js +432 -0
- package/dist/hooks/chunk-SSQDZKXG.js +268 -0
- package/dist/hooks/chunk-SSX23SJ2.js +89 -0
- package/dist/hooks/chunk-SYHFKE4C.js +77 -0
- package/dist/hooks/chunk-TCGNI2ZY.js +42 -0
- package/dist/hooks/chunk-TG3WXJF5.js +137 -0
- package/dist/hooks/chunk-TH7IJAY5.js +77 -0
- package/dist/hooks/chunk-TLZ27PCY.js +240 -0
- package/dist/hooks/chunk-U652FXTN.js +566 -0
- package/dist/hooks/chunk-UEK47YUF.js +268 -0
- package/dist/hooks/chunk-UIO45H3O.js +432 -0
- package/dist/hooks/chunk-UNLZEEVH.js +5005 -0
- package/dist/hooks/chunk-UNRVF3SZ.js +432 -0
- package/dist/hooks/chunk-USLFAFOI.js +3453 -0
- package/dist/hooks/chunk-VAEELMLL.js +442 -0
- package/dist/hooks/chunk-VALSWLDQ.js +3453 -0
- package/dist/hooks/chunk-VC5JEPNY.js +3398 -0
- package/dist/hooks/chunk-VEZVK6C7.js +230 -0
- package/dist/hooks/chunk-VK5JKFAR.js +49 -0
- package/dist/hooks/chunk-VNF2KP7Z.js +469 -0
- package/dist/hooks/chunk-VWWCUMW6.js +2669 -0
- package/dist/hooks/chunk-W4JARUQV.js +137 -0
- package/dist/hooks/chunk-WCYPBPJC.js +5014 -0
- package/dist/hooks/chunk-WEOBMNJG.js +2993 -0
- package/dist/hooks/chunk-WKJU3J5Y.js +5390 -0
- package/dist/hooks/chunk-WMN4TSVF.js +3299 -0
- package/dist/hooks/chunk-WNON54PT.js +3469 -0
- package/dist/hooks/chunk-WOVKBPPX.js +137 -0
- package/dist/hooks/chunk-WRVFORYJ.js +432 -0
- package/dist/hooks/chunk-WUBVYGQZ.js +240 -0
- package/dist/hooks/chunk-WWULTUOM.js +68 -0
- package/dist/hooks/chunk-WXHKKB45.js +4962 -0
- package/dist/hooks/chunk-XAI3YTHJ.js +469 -0
- package/dist/hooks/chunk-XFZH6JZJ.js +77 -0
- package/dist/hooks/chunk-XGPWX6IA.js +137 -0
- package/dist/hooks/chunk-XIXXIVGY.js +566 -0
- package/dist/hooks/chunk-XKDOYJGA.js +922 -0
- package/dist/hooks/chunk-YALTVBHM.js +432 -0
- package/dist/hooks/chunk-YEBEPBFK.js +5014 -0
- package/dist/hooks/chunk-YI2BQ3DK.js +3441 -0
- package/dist/hooks/chunk-YVNBCFGG.js +1829 -0
- package/dist/hooks/chunk-YXBN3RGG.js +432 -0
- package/dist/hooks/chunk-Z2OOJSW3.js +3163 -0
- package/dist/hooks/chunk-ZA3HVBOY.js +2644 -0
- package/dist/hooks/chunk-ZKID46U3.js +137 -0
- package/dist/hooks/chunk-ZPMU2JV6.js +49 -0
- package/dist/hooks/chunk-ZRKY4W7O.js +432 -0
- package/dist/hooks/chunk-ZTMRB7LJ.js +268 -0
- package/dist/hooks/chunk-ZVPPBQ3L.js +3413 -0
- package/dist/hooks/codex-hook-adapter.js +164 -0
- package/dist/hooks/duplicate-read-guard.js +29 -0
- package/dist/hooks/format-edited.js +37 -0
- package/dist/hooks/investigation-guard.js +31 -0
- package/dist/hooks/pretool-guard.js +21 -0
- package/dist/hooks/session-lang.js +34 -0
- package/dist/hooks/stop-guard.js +1597 -0
- package/dist/josh.js +1795 -0
- package/dist/managed-marker/index.d.ts +10 -0
- package/dist/managed-marker/index.js +32 -0
- package/dist/self-sync-guard/index.d.ts +10 -0
- package/dist/self-sync-guard/index.js +49 -0
- package/dist/version/index.d.ts +93 -0
- package/dist/version/index.js +1024 -0
- package/env/index.d.ts +7 -0
- package/env/index.js +62 -0
- package/eslint/base.js +233 -0
- package/eslint/checkout-rooted-parser.js +34 -0
- package/eslint/config-fingerprint.js +103 -0
- package/eslint/rules/code-quality.js +292 -0
- package/eslint/rules/english-only-prose.js +135 -0
- package/eslint/rules/formatting.js +44 -0
- package/eslint/rules/import.js +83 -0
- package/eslint/rules/namespace-object-export.js +107 -0
- package/eslint/rules/naming-convention.js +109 -0
- package/eslint/rules/promise.js +17 -0
- package/eslint/rules/sonarjs.js +45 -0
- package/eslint/rules/test-filename.js +91 -0
- package/eslint/rules/typescript.js +186 -0
- package/eslint/rules/unicorn.js +191 -0
- package/eslint/vanilla.js +1 -0
- package/evals/scenarios/consult-not-execute.json +20 -0
- package/evals/scenarios/no-implicit-workflow.json +26 -0
- package/evals/scenarios/overrides-both-locations.json +29 -0
- package/evals/scenarios/upstream-interrupt.json +23 -0
- package/evals/scenarios/workflow-skill-loaded.json +16 -0
- package/lefthook/base.yml +131 -0
- package/lefthook/vanilla.yml +7 -0
- package/package.json +169 -0
- package/playwright.config.ts +160 -0
- package/pnpm-workspace.yaml +41 -0
- package/ports/index.d.ts +17 -0
- package/ports/index.js +256 -0
- package/prettier/index.d.ts +3 -0
- package/prettier/index.js +31 -0
- package/prompts/agent-lint-protocol.json +79 -0
- package/prompts/agent-rules.md +63 -0
- package/prompts/coding-standards.md +382 -0
- package/prompts/collaboration-workflow/consultation-vs-execution.md +8 -0
- package/prompts/collaboration-workflow/cross-repo-epic.md +54 -0
- package/prompts/collaboration-workflow/distributed-docs.md +7 -0
- package/prompts/collaboration-workflow/durable-rules.md +24 -0
- package/prompts/collaboration-workflow/epic-audit.md +56 -0
- package/prompts/collaboration-workflow/epic-bundle.md +109 -0
- package/prompts/collaboration-workflow/file-edits.md +124 -0
- package/prompts/collaboration-workflow/gh-rest.md +57 -0
- package/prompts/collaboration-workflow/issue-citation.md +38 -0
- package/prompts/collaboration-workflow/issue-template.md +190 -0
- package/prompts/collaboration-workflow/latest-first.md +14 -0
- package/prompts/collaboration-workflow/no-clones.md +11 -0
- package/prompts/collaboration-workflow/operating-rules.md +123 -0
- package/prompts/collaboration-workflow/output-bounds.md +107 -0
- package/prompts/collaboration-workflow/overview.md +35 -0
- package/prompts/collaboration-workflow/plan-comment.md +85 -0
- package/prompts/collaboration-workflow/proposal-request.md +23 -0
- package/prompts/collaboration-workflow/report-format.md +206 -0
- package/prompts/collaboration-workflow/residency.md +94 -0
- package/prompts/collaboration-workflow/rule-delivery.md +146 -0
- package/prompts/collaboration-workflow/shell-body.md +82 -0
- package/prompts/collaboration-workflow/simplicity-first.md +9 -0
- package/prompts/collaboration-workflow/single-source-rules.md +13 -0
- package/prompts/collaboration-workflow/turn-batching.md +137 -0
- package/prompts/collaboration-workflow/upstream-interrupt.md +51 -0
- package/prompts/collaboration-workflow/wip-cap.md +118 -0
- package/prompts/collaboration-workflow.md +52 -0
- package/prompts/refactoring.md +103 -0
- package/prompts/review-rubric.md +338 -0
- package/prompts/review.md +217 -0
- package/prompts/sonar-hotspot-handling.md +77 -0
- package/prompts/testing-guide.md +277 -0
- package/scripts/adopt/adopt-logic.ts +107 -0
- package/scripts/adopt/adopt-toolkits.ts +181 -0
- package/scripts/adopt/adopt.ts +171 -0
- package/scripts/agent/agent-argv.ts +140 -0
- package/scripts/agent/agent-diagnostics.ts +120 -0
- package/scripts/agent/agent-event.ts +173 -0
- package/scripts/agent/agent-exit-record.ts +32 -0
- package/scripts/agent/agent-launch-environment.ts +71 -0
- package/scripts/agent/agent-role-profile.ts +329 -0
- package/scripts/agent/api-outage.ts +51 -0
- package/scripts/agent/claude-agent-argv.ts +151 -0
- package/scripts/agent/claude-result-event.ts +98 -0
- package/scripts/agent/codex-agent-argv.ts +94 -0
- package/scripts/agent/codex-home-source.ts +11 -0
- package/scripts/agent/interactive-ask.ts +91 -0
- package/scripts/auto-ok/auto-ok-cli.ts +516 -0
- package/scripts/backlog/backlog-arrival.ts +147 -0
- package/scripts/backlog/backlog-budget-cli.ts +220 -0
- package/scripts/backlog/backlog-budget.ts +284 -0
- package/scripts/backlog/backlog-defect-priority.ts +77 -0
- package/scripts/backlog/backlog-drive-cli.ts +377 -0
- package/scripts/backlog/backlog-drive-finish.ts +23 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +81 -0
- package/scripts/backlog/backlog-drive-named.ts +101 -0
- package/scripts/backlog/backlog-drive-offer-argv.ts +29 -0
- package/scripts/backlog/backlog-drive-owner.ts +22 -0
- package/scripts/backlog/backlog-drive-restore.ts +67 -0
- package/scripts/backlog/backlog-drive.ts +322 -0
- package/scripts/backlog/backlog-named.ts +164 -0
- package/scripts/backlog/backlog-next.ts +376 -0
- package/scripts/backlog/backlog-offer-cli.ts +279 -0
- package/scripts/backlog/backlog-offer.ts +93 -0
- package/scripts/backlog/backlog-plan-cli.ts +235 -0
- package/scripts/backlog/backlog-plan.ts +231 -0
- package/scripts/backlog/backlog-pool.ts +322 -0
- package/scripts/backlog/backlog-ready.ts +146 -0
- package/scripts/backlog/backlog-scope.ts +144 -0
- package/scripts/backlog/backlog-stalled-cli.ts +30 -0
- package/scripts/backlog/backlog-stalled-detect.ts +143 -0
- package/scripts/backlog/backlog-stalled.ts +118 -0
- package/scripts/behavior/behavior-assertion.ts +87 -0
- package/scripts/behavior/behavior-cli.ts +88 -0
- package/scripts/behavior/behavior-rules.ts +128 -0
- package/scripts/build/build-bin.ts +36 -0
- package/scripts/build/build-claude-md.ts +42 -0
- package/scripts/build/build-config-merge.ts +26 -0
- package/scripts/build/build-hooks.ts +79 -0
- package/scripts/build/build-library.ts +83 -0
- package/scripts/build/build-managed-marker.ts +26 -0
- package/scripts/build/build-self-sync-guard.ts +26 -0
- package/scripts/build/build-version.ts +25 -0
- package/scripts/build/local-bin.ts +97 -0
- package/scripts/build/shim-shell.ts +25 -0
- package/scripts/bytes/bytes-command.ts +181 -0
- package/scripts/cases/cases-cli.ts +48 -0
- package/scripts/cases/cases-logic.ts +100 -0
- package/scripts/claude/skill-meta.ts +37 -0
- package/scripts/claude/workflow-destination.ts +13 -0
- package/scripts/clone/clone-aggregate.ts +76 -0
- package/scripts/clone/clone-fingerprint.ts +96 -0
- package/scripts/clone/clone-scan-cli.ts +39 -0
- package/scripts/clone/clone-scan.ts +158 -0
- package/scripts/config-merge/index.ts +19 -0
- package/scripts/config-merge/json-format.ts +128 -0
- package/scripts/config-merge/list-patch.ts +61 -0
- package/scripts/config-merge/parse-jsonc.ts +14 -0
- package/scripts/config-merge/patch-json-key.ts +439 -0
- package/scripts/config-merge/patch-json-list.ts +38 -0
- package/scripts/config-merge/patch-yaml-list.ts +107 -0
- package/scripts/cost-runtime/codex-usage.ts +119 -0
- package/scripts/cost-runtime/context-cut-payback.ts +77 -0
- package/scripts/cost-runtime/context-cut-threshold.ts +21 -0
- package/scripts/cost-runtime/cost-attribute.ts +168 -0
- package/scripts/cost-runtime/cost-blocks.ts +149 -0
- package/scripts/cost-runtime/cost-cli.ts +318 -0
- package/scripts/cost-runtime/cost-corpus.ts +278 -0
- package/scripts/cost-runtime/cost-format.ts +32 -0
- package/scripts/cost-runtime/cost-pricing.ts +176 -0
- package/scripts/cost-runtime/cost-tokens.ts +84 -0
- package/scripts/cost-runtime/cost-transcript.ts +531 -0
- package/scripts/cost-runtime/cost-usage.ts +287 -0
- package/scripts/cost-runtime/cost-verdict.ts +89 -0
- package/scripts/cost-runtime/own-session.ts +58 -0
- package/scripts/cost-runtime/transcript-cwd.ts +14 -0
- package/scripts/delegation/delegation-cli.ts +91 -0
- package/scripts/delegation/delegation-policy.ts +178 -0
- package/scripts/delegation/duplicate-read-guard.ts +244 -0
- package/scripts/delegation/fanout-cli.ts +61 -0
- package/scripts/delegation/fanout.ts +95 -0
- package/scripts/delegation/investigation-guard.ts +131 -0
- package/scripts/delegation/investigation-reads.ts +637 -0
- package/scripts/discovery/repo-discovery.ts +166 -0
- package/scripts/discovery/repo-map-logic.ts +102 -0
- package/scripts/discovery/repo-origin.ts +153 -0
- package/scripts/discovery/repo-party-cli.ts +69 -0
- package/scripts/discovery/repo-party.ts +46 -0
- package/scripts/doctor/doctor-consumer.ts +181 -0
- package/scripts/doctor/doctor-io.ts +210 -0
- package/scripts/doctor/doctor-logic.ts +122 -0
- package/scripts/doctor/doctor-ports.ts +117 -0
- package/scripts/doctor/doctor.ts +232 -0
- package/scripts/document/backlogrun-parent-read-set.ts +48 -0
- package/scripts/document/bash-output-cap.ts +45 -0
- package/scripts/document/document-byte-budget.ts +183 -0
- package/scripts/document/document-byte-check.ts +131 -0
- package/scripts/document/document-reachability.ts +131 -0
- package/scripts/document/document-read-cli.ts +82 -0
- package/scripts/document/document-scan.ts +108 -0
- package/scripts/document/document-section-cli.ts +101 -0
- package/scripts/document/document-section.ts +156 -0
- package/scripts/document/edit-files-cli.ts +280 -0
- package/scripts/document/entry-read-budget.ts +154 -0
- package/scripts/document/entry-read-set.ts +471 -0
- package/scripts/document/generate-catalog.ts +69 -0
- package/scripts/document/lane-child-read-set.ts +88 -0
- package/scripts/document/read-files-cli.ts +135 -0
- package/scripts/document/read-set-cli.ts +295 -0
- package/scripts/document/read-set-point-of-use.ts +89 -0
- package/scripts/document/read-set-pricing.ts +52 -0
- package/scripts/document/read-set-trim.ts +78 -0
- package/scripts/document/retired-phrases.ts +143 -0
- package/scripts/document/review-agent-type.ts +46 -0
- package/scripts/document/single-source.ts +73 -0
- package/scripts/epic/epic-audit-checks.ts +452 -0
- package/scripts/epic/epic-audit-cli.ts +374 -0
- package/scripts/epic/epic-audit-orphans.ts +142 -0
- package/scripts/epic/epic-audit-rationale.ts +191 -0
- package/scripts/epic/epic-audit-report.ts +101 -0
- package/scripts/epic/epic-audit.ts +240 -0
- package/scripts/epic/epic-bundle-cli.ts +472 -0
- package/scripts/epic/epic-bundle-evidence.ts +147 -0
- package/scripts/epic/epic-bundle-gaps.ts +86 -0
- package/scripts/epic/epic-bundle-referenced.ts +195 -0
- package/scripts/epic/epic-bundle.ts +309 -0
- package/scripts/epic/epic-busy.ts +204 -0
- package/scripts/epic/epic-candidate-confirm.ts +279 -0
- package/scripts/epic/epic-classify.ts +294 -0
- package/scripts/epic/epic-cross-repo.ts +366 -0
- package/scripts/epic/epic-fetch.ts +370 -0
- package/scripts/epic/epic-graph.ts +279 -0
- package/scripts/epic/epic-index.ts +209 -0
- package/scripts/epic/epic-issue.ts +172 -0
- package/scripts/epic/epic-lane-offer.ts +207 -0
- package/scripts/epic/epic-nested.ts +37 -0
- package/scripts/epic/epic-next-read.ts +141 -0
- package/scripts/epic/epic-next-views.ts +144 -0
- package/scripts/epic/epic-next.ts +477 -0
- package/scripts/epic/epic-outside-blocker.ts +113 -0
- package/scripts/epic/epic-relation-recheck.ts +108 -0
- package/scripts/epic/epic-report.ts +200 -0
- package/scripts/gate/core-budget.ts +292 -0
- package/scripts/gate/gate-log.ts +95 -0
- package/scripts/gate/gate-plan.ts +356 -0
- package/scripts/gate/gate-report.ts +207 -0
- package/scripts/gate/gate-skip.ts +123 -0
- package/scripts/gate/gate-tree.ts +49 -0
- package/scripts/gate/hook-gate-reuse.ts +130 -0
- package/scripts/gate/pre-commit-type-check.ts +187 -0
- package/scripts/gate/scoped-green.ts +260 -0
- package/scripts/gate/type-check-step.ts +90 -0
- package/scripts/gate/verification-gate.ts +531 -0
- package/scripts/gh/fix-gh-packages-logic.ts +232 -0
- package/scripts/gh/fix-gh-packages.ts +129 -0
- package/scripts/gh/gh-cli-token.ts +18 -0
- package/scripts/gh/gh-spawn.ts +44 -0
- package/scripts/git/animation-helpers.ts +81 -0
- package/scripts/git/change-base.ts +26 -0
- package/scripts/git/changed-file-scope.ts +209 -0
- package/scripts/git/changed-paths.ts +30 -0
- package/scripts/git/constants.ts +41 -0
- package/scripts/git/git-ai-review-scan.ts +154 -0
- package/scripts/git/git-animation.ts +41 -0
- package/scripts/git/git-branch.ts +127 -0
- package/scripts/git/git-command.ts +587 -0
- package/scripts/git/git-commit.ts +27 -0
- package/scripts/git/git-common-directory.ts +38 -0
- package/scripts/git/git-epic-add-body.ts +365 -0
- package/scripts/git/git-epic-add-plan.ts +421 -0
- package/scripts/git/git-epic-add.ts +249 -0
- package/scripts/git/git-epic-body.ts +150 -0
- package/scripts/git/git-epic-chains.ts +411 -0
- package/scripts/git/git-epic-close-comment.ts +199 -0
- package/scripts/git/git-epic-close.ts +393 -0
- package/scripts/git/git-epic-decision.ts +171 -0
- package/scripts/git/git-epic-parse.ts +351 -0
- package/scripts/git/git-epic-promote.ts +102 -0
- package/scripts/git/git-epic-read.ts +73 -0
- package/scripts/git/git-epic-reconcile.ts +246 -0
- package/scripts/git/git-epic-reference.ts +98 -0
- package/scripts/git/git-epic-relations.ts +78 -0
- package/scripts/git/git-epic-remove-plan.ts +152 -0
- package/scripts/git/git-epic-remove.ts +101 -0
- package/scripts/git/git-epic-run.ts +223 -0
- package/scripts/git/git-epic-sections.ts +98 -0
- package/scripts/git/git-epic-shape.ts +81 -0
- package/scripts/git/git-epic-validate.ts +155 -0
- package/scripts/git/git-error.ts +78 -0
- package/scripts/git/git-execa-error.ts +35 -0
- package/scripts/git/git-fixture-workspace.ts +88 -0
- package/scripts/git/git-followup-cleanup.ts +88 -0
- package/scripts/git/git-followup-flush.ts +63 -0
- package/scripts/git/git-followup-label.ts +67 -0
- package/scripts/git/git-followup-pending.ts +95 -0
- package/scripts/git/git-followup-stages.ts +149 -0
- package/scripts/git/git-gh-api-path.ts +118 -0
- package/scripts/git/git-gh-check.ts +21 -0
- package/scripts/git/git-gh-command.ts +17 -0
- package/scripts/git/git-gh-exec.ts +344 -0
- package/scripts/git/git-gh-failure.ts +103 -0
- package/scripts/git/git-gh-helpers.ts +44 -0
- package/scripts/git/git-gh-issue-list.ts +257 -0
- package/scripts/git/git-gh-issue-read.ts +457 -0
- package/scripts/git/git-gh-issue-rest.ts +238 -0
- package/scripts/git/git-gh-issue-write.ts +285 -0
- package/scripts/git/git-gh-issue.ts +161 -0
- package/scripts/git/git-gh-pr-auto-merge.ts +85 -0
- package/scripts/git/git-gh-pr-read.ts +322 -0
- package/scripts/git/git-gh-pr-rest.ts +172 -0
- package/scripts/git/git-gh-pr-review.ts +103 -0
- package/scripts/git/git-gh-pr-rollup.ts +91 -0
- package/scripts/git/git-gh-pr-snapshot.ts +138 -0
- package/scripts/git/git-gh-pr.ts +219 -0
- package/scripts/git/git-gh-reachability.ts +56 -0
- package/scripts/git/git-gh-repo.ts +37 -0
- package/scripts/git/git-gh-rest-state.ts +14 -0
- package/scripts/git/git-issue.ts +168 -0
- package/scripts/git/git-location-environment.ts +62 -0
- package/scripts/git/git-ls-remote.ts +28 -0
- package/scripts/git/git-next-issues.ts +98 -0
- package/scripts/git/git-notify.ts +104 -0
- package/scripts/git/git-pr-ai-review.ts +180 -0
- package/scripts/git/git-pr-checks-eval.ts +265 -0
- package/scripts/git/git-pr-checks-parse.ts +153 -0
- package/scripts/git/git-pr-checks-watch.ts +184 -0
- package/scripts/git/git-pr-checks.ts +387 -0
- package/scripts/git/git-pr-coderabbit.ts +129 -0
- package/scripts/git/git-pr-confirmation.ts +64 -0
- package/scripts/git/git-pr-error.ts +25 -0
- package/scripts/git/git-pr-followup-wrapup.ts +225 -0
- package/scripts/git/git-pr-followup.ts +436 -0
- package/scripts/git/git-pr-managed-config.ts +69 -0
- package/scripts/git/git-pr-messages.ts +37 -0
- package/scripts/git/git-pr.ts +181 -0
- package/scripts/git/git-prompt-display.ts +22 -0
- package/scripts/git/git-prompt.ts +207 -0
- package/scripts/git/git-push-transport.ts +173 -0
- package/scripts/git/git-push.ts +27 -0
- package/scripts/git/git-remote-branch.ts +40 -0
- package/scripts/git/git-spawn.ts +47 -0
- package/scripts/git/git-staging.ts +128 -0
- package/scripts/git/git-stash.ts +124 -0
- package/scripts/git/git-status.ts +198 -0
- package/scripts/git/git-worktree.ts +110 -0
- package/scripts/git/github-issue-url.ts +105 -0
- package/scripts/git/gone-branch.ts +113 -0
- package/scripts/git/issue-labels.ts +279 -0
- package/scripts/git/listing-cutoff.ts +51 -0
- package/scripts/git/main-merge-guard.ts +134 -0
- package/scripts/git/main-merge.ts +120 -0
- package/scripts/git/main-sync.ts +121 -0
- package/scripts/git/parse-json-array.ts +102 -0
- package/scripts/git/schemas.ts +166 -0
- package/scripts/git/stash-orphans.ts +91 -0
- package/scripts/git/stash-pop-args.ts +59 -0
- package/scripts/git/stash-pop-cli.ts +105 -0
- package/scripts/git/telegram-notify.ts +404 -0
- package/scripts/hooks/batch-guard.ts +144 -0
- package/scripts/hooks/check-commit-message.ts +134 -0
- package/scripts/hooks/codex-hook-adapter.ts +155 -0
- package/scripts/hooks/edited-cspell.ts +128 -0
- package/scripts/hooks/format-edited-file-fixtures.ts +109 -0
- package/scripts/hooks/format-edited-file.ts +510 -0
- package/scripts/hooks/format-rewrite-notice.ts +99 -0
- package/scripts/hooks/pre-push-unit.ts +146 -0
- package/scripts/hooks/pretool-guard.ts +96 -0
- package/scripts/hooks/prevent-main-commit.ts +38 -0
- package/scripts/hooks/prompt-hooks.ts +38 -0
- package/scripts/hooks/reserved-run.ts +90 -0
- package/scripts/hooks/stop-guard.ts +135 -0
- package/scripts/init/claude-plugin-config.ts +51 -0
- package/scripts/init/distributed-paths.ts +100 -0
- package/scripts/init/hook-command-rewrite.ts +85 -0
- package/scripts/init/hook-launch.ts +31 -0
- package/scripts/init/init-actions.ts +147 -0
- package/scripts/init/init-ai-copy.ts +235 -0
- package/scripts/init/init-copy-content.ts +50 -0
- package/scripts/init/init-logic-deploy-vps.ts +43 -0
- package/scripts/init/init-logic-json-merge.ts +340 -0
- package/scripts/init/init-logic-migrate.ts +62 -0
- package/scripts/init/init-logic-package-key-order.ts +50 -0
- package/scripts/init/init-logic-secretlint.ts +36 -0
- package/scripts/init/init-logic-sonar.ts +197 -0
- package/scripts/init/init-logic-templates.ts +142 -0
- package/scripts/init/init-logic-workspace.ts +59 -0
- package/scripts/init/init-logic-yaml-merge.ts +57 -0
- package/scripts/init/init-logic.ts +474 -0
- package/scripts/init/init-paths.ts +11 -0
- package/scripts/init/init-sonar.ts +32 -0
- package/scripts/init/init.ts +219 -0
- package/scripts/init/kit-base-preset.ts +60 -0
- package/scripts/init/plugin-install-hint.ts +47 -0
- package/scripts/init/tsconfig-preset-migration.ts +67 -0
- package/scripts/issue/baseline-measure.ts +105 -0
- package/scripts/issue/behavior-change-lint.ts +122 -0
- package/scripts/issue/defect-rate-cli.ts +167 -0
- package/scripts/issue/defect-rate.ts +145 -0
- package/scripts/issue/issue-backlinks-cli.ts +97 -0
- package/scripts/issue/issue-backlinks.ts +164 -0
- package/scripts/issue/issue-cite-cli.ts +158 -0
- package/scripts/issue/issue-cite.ts +102 -0
- package/scripts/issue/issue-comment-cli.ts +95 -0
- package/scripts/issue/issue-fold-cli.ts +104 -0
- package/scripts/issue/issue-fold-existing-cli.ts +81 -0
- package/scripts/issue/issue-fold-existing.ts +73 -0
- package/scripts/issue/issue-fold.ts +42 -0
- package/scripts/issue/issue-lint-cli.ts +60 -0
- package/scripts/issue/issue-lint.ts +26 -0
- package/scripts/issue/issue-logic.ts +50 -0
- package/scripts/issue/issue-read-cli.ts +190 -0
- package/scripts/issue/issue-read.ts +145 -0
- package/scripts/issue/issue-scout-cli.ts +482 -0
- package/scripts/issue/issue-scout.ts +244 -0
- package/scripts/issue/issue-state-cli.ts +260 -0
- package/scripts/issue/issue-state.ts +109 -0
- package/scripts/issue/markdown-section.ts +39 -0
- package/scripts/issue/measure-rerun-cli.ts +98 -0
- package/scripts/issue/reproduction-measure.ts +59 -0
- package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +1171 -0
- package/scripts/josh/agent-session-environment.ts +188 -0
- package/scripts/josh/cli-body.ts +96 -0
- package/scripts/josh/command-suggest.ts +57 -0
- package/scripts/josh/file-map-stamp.ts +264 -0
- package/scripts/josh/hook-decision.ts +479 -0
- package/scripts/josh/josh-command-map.ts +196 -0
- package/scripts/josh/josh-command-types.ts +226 -0
- package/scripts/josh/josh-commands-ai.ts +327 -0
- package/scripts/josh/josh-commands-backlog.ts +54 -0
- package/scripts/josh/josh-commands-clone.ts +18 -0
- package/scripts/josh/josh-commands-development.ts +206 -0
- package/scripts/josh/josh-commands-document.ts +45 -0
- package/scripts/josh/josh-commands-guard.ts +38 -0
- package/scripts/josh/josh-commands-hooks.ts +42 -0
- package/scripts/josh/josh-commands-issue.ts +69 -0
- package/scripts/josh/josh-commands-lane.ts +75 -0
- package/scripts/josh/josh-commands-lint.ts +37 -0
- package/scripts/josh/josh-commands-maintenance.ts +80 -0
- package/scripts/josh/josh-commands-project.ts +53 -0
- package/scripts/josh/josh-commands-split.ts +20 -0
- package/scripts/josh/josh-commands-versioning.ts +48 -0
- package/scripts/josh/josh-commands-workflow.ts +116 -0
- package/scripts/josh/josh-composite-arguments.ts +55 -0
- package/scripts/josh/josh-environment-file.ts +31 -0
- package/scripts/josh/josh-in-process.ts +80 -0
- package/scripts/josh/josh-logic.ts +308 -0
- package/scripts/josh/josh-run.ts +53 -0
- package/scripts/josh/josh-script-reader.ts +11 -0
- package/scripts/josh/josh-verdict.ts +111 -0
- package/scripts/josh/josh.ts +60 -0
- package/scripts/josh/kit-only.ts +33 -0
- package/scripts/josh/path-decision.ts +104 -0
- package/scripts/josh/platform-temporary.ts +66 -0
- package/scripts/josh/process-identity.ts +335 -0
- package/scripts/josh/session-language-cli.ts +51 -0
- package/scripts/josh/session-language.ts +30 -0
- package/scripts/josh/stamp-file.ts +194 -0
- package/scripts/lane/lane-await.ts +165 -0
- package/scripts/lane/lane-cache-run.ts +39 -0
- package/scripts/lane/lane-cache.ts +135 -0
- package/scripts/lane/lane-capacity.ts +69 -0
- package/scripts/lane/lane-child-invocation.ts +73 -0
- package/scripts/lane/lane-child-marker.ts +58 -0
- package/scripts/lane/lane-cli.ts +410 -0
- package/scripts/lane/lane-close.ts +197 -0
- package/scripts/lane/lane-dispatch-log.ts +13 -0
- package/scripts/lane/lane-dispatch.ts +458 -0
- package/scripts/lane/lane-environment.ts +253 -0
- package/scripts/lane/lane-guard-policy.ts +136 -0
- package/scripts/lane/lane-install.ts +94 -0
- package/scripts/lane/lane-launch-cli.ts +133 -0
- package/scripts/lane/lane-occupancy.ts +112 -0
- package/scripts/lane/lane-open.ts +275 -0
- package/scripts/lane/lane-output.ts +124 -0
- package/scripts/lane/lane-paths.ts +96 -0
- package/scripts/lane/lane-reap.ts +137 -0
- package/scripts/lane/lane-registry.ts +261 -0
- package/scripts/lane/lane-relaunch.ts +68 -0
- package/scripts/lane/lane-report.ts +95 -0
- package/scripts/lane/lane-resume.ts +61 -0
- package/scripts/lane/lane-seed.ts +44 -0
- package/scripts/lane/lane-start-point.ts +175 -0
- package/scripts/lane/openai-lane-supervisor-cli.ts +32 -0
- package/scripts/lane/openai-lane-supervisor-decision.ts +63 -0
- package/scripts/lane/openai-lane-supervisor.ts +337 -0
- package/scripts/lib/bounded-pool.ts +109 -0
- package/scripts/lib/buffered-process.ts +82 -0
- package/scripts/lib/caddy-logs.sh +45 -0
- package/scripts/lib/cli-flags.ts +19 -0
- package/scripts/lib/json-value.ts +24 -0
- package/scripts/lib/poll.ts +57 -0
- package/scripts/lib/read-file.ts +16 -0
- package/scripts/lib/schemas.ts +67 -0
- package/scripts/lib/spawn-exit.ts +45 -0
- package/scripts/lib/status-icons.ts +24 -0
- package/scripts/lines/effective-limit.ts +156 -0
- package/scripts/lines/line-budget.ts +404 -0
- package/scripts/lines/line-targets.ts +80 -0
- package/scripts/lines/lines-command.ts +174 -0
- package/scripts/lint/cspell-cached.ts +41 -0
- package/scripts/lint/lint-parallel.ts +72 -0
- package/scripts/lint/lint-related-scope.ts +128 -0
- package/scripts/lint/lint-related.ts +104 -0
- package/scripts/managed-marker/index.ts +5 -0
- package/scripts/managed-marker/managed-marker-logic.ts +67 -0
- package/scripts/observations/observation-ledger-home.ts +32 -0
- package/scripts/observations/observation-ledger-line.ts +93 -0
- package/scripts/observations/observation-ledger.ts +35 -0
- package/scripts/observations/observations-flush-cli.ts +42 -0
- package/scripts/observations/observations-flush-landing.ts +97 -0
- package/scripts/observations/observations-flush.ts +420 -0
- package/scripts/overrides/lockfile-overrides.ts +105 -0
- package/scripts/overrides/overrides-check.ts +84 -0
- package/scripts/overrides/overrides-files.ts +19 -0
- package/scripts/overrides/overrides-logic.ts +211 -0
- package/scripts/overrides/schemas.ts +49 -0
- package/scripts/package/package-scout-cli.ts +195 -0
- package/scripts/package/package-scout-format.ts +151 -0
- package/scripts/package/package-scout.ts +121 -0
- package/scripts/ports/port-command.ts +87 -0
- package/scripts/propagate/propagate-git-failure.ts +191 -0
- package/scripts/propagate/propagate-git.ts +224 -0
- package/scripts/propagate/propagate-publish.ts +181 -0
- package/scripts/propagate/propagate-run.ts +201 -0
- package/scripts/propagate/propagate-steps.ts +421 -0
- package/scripts/propagate/propagate-targets.ts +160 -0
- package/scripts/propagate/propagate.ts +216 -0
- package/scripts/refactor/import-graph.ts +187 -0
- package/scripts/refactor/refactor-lint.ts +250 -0
- package/scripts/refactor/refactor-scan-cli.ts +10 -0
- package/scripts/refactor/refactor-scan.ts +124 -0
- package/scripts/refactor/refactor-targets.ts +103 -0
- package/scripts/release/release-cli.ts +88 -0
- package/scripts/release/release-history.ts +132 -0
- package/scripts/release/release-plan.ts +130 -0
- package/scripts/release/release-publish.ts +152 -0
- package/scripts/release/release-scope-cli.ts +103 -0
- package/scripts/release/release-tag.ts +93 -0
- package/scripts/release/release-worktree.ts +71 -0
- package/scripts/repo/auto-merge-setting-logic.ts +100 -0
- package/scripts/repo/auto-merge-setting.ts +37 -0
- package/scripts/repo/repo-setting.ts +112 -0
- package/scripts/report/report-lint-cli.ts +49 -0
- package/scripts/report/report-lint.ts +250 -0
- package/scripts/retrospective/retrospective-cli.ts +97 -0
- package/scripts/retrospective/retrospective.ts +127 -0
- package/scripts/review/disposition-cli.ts +44 -0
- package/scripts/review/disposition-logic.ts +45 -0
- package/scripts/review/live-evidence.ts +62 -0
- package/scripts/review/review-attest-cli.ts +115 -0
- package/scripts/review/review-attest.ts +319 -0
- package/scripts/review/review-brief-cli.ts +290 -0
- package/scripts/review/review-brief.ts +440 -0
- package/scripts/review/review-checkout.ts +56 -0
- package/scripts/review/review-finding-ledger.ts +167 -0
- package/scripts/review/review-findings-cli.ts +57 -0
- package/scripts/review/review-level.ts +86 -0
- package/scripts/review/review-record-cli.ts +196 -0
- package/scripts/review/review-record.ts +74 -0
- package/scripts/review/review-round2-cli.ts +84 -0
- package/scripts/review/review-round2.ts +139 -0
- package/scripts/review/review-stamps.ts +113 -0
- package/scripts/review/review-tree.ts +58 -0
- package/scripts/rules/bash-triggers.ts +44 -0
- package/scripts/rules/decision-oracle.ts +342 -0
- package/scripts/rules/delivered-rules-harness.ts +72 -0
- package/scripts/rules/delivered-rules.ts +793 -0
- package/scripts/rules/early-heartbeat.ts +241 -0
- package/scripts/rules/file-body.ts +150 -0
- package/scripts/rules/filing-cap.ts +133 -0
- package/scripts/rules/filing-offer.ts +81 -0
- package/scripts/rules/firing-point.ts +63 -0
- package/scripts/rules/gh-api.ts +65 -0
- package/scripts/rules/git-argv.ts +129 -0
- package/scripts/rules/git-force.ts +104 -0
- package/scripts/rules/implementation-cut-verdict.ts +84 -0
- package/scripts/rules/implementation-cut.ts +202 -0
- package/scripts/rules/issue-citation.ts +242 -0
- package/scripts/rules/issue-fold.ts +73 -0
- package/scripts/rules/issue-scout.ts +64 -0
- package/scripts/rules/josh-git-bare.ts +80 -0
- package/scripts/rules/lane-carry-conflict.ts +96 -0
- package/scripts/rules/lane-interactive-ask.ts +71 -0
- package/scripts/rules/lane-park.ts +122 -0
- package/scripts/rules/lane-switch-main.ts +139 -0
- package/scripts/rules/oracle-consulted.ts +81 -0
- package/scripts/rules/oracle-firing.ts +151 -0
- package/scripts/rules/oracle-list-cli.ts +81 -0
- package/scripts/rules/piped-verification.ts +126 -0
- package/scripts/rules/poll-loop.ts +125 -0
- package/scripts/rules/pre-gate-cut.ts +207 -0
- package/scripts/rules/prior-comment-read.ts +106 -0
- package/scripts/rules/raw-field-body.ts +56 -0
- package/scripts/rules/reply-language.ts +116 -0
- package/scripts/rules/rule-body-guard.ts +206 -0
- package/scripts/rules/rule-guard.ts +23 -0
- package/scripts/rules/rule-value-cli.ts +129 -0
- package/scripts/rules/rule-value.ts +397 -0
- package/scripts/rules/run-tail.ts +178 -0
- package/scripts/rules/shell-body-trigger.ts +204 -0
- package/scripts/rules/shell-segments.ts +45 -0
- package/scripts/rules/stop-rules.ts +329 -0
- package/scripts/rules/tail-commands.ts +35 -0
- package/scripts/rules/test-declared-commit.ts +51 -0
- package/scripts/rules/third-party-write.ts +90 -0
- package/scripts/rules/top-level-scripts-guard.ts +47 -0
- package/scripts/rules/worktree-guard.ts +130 -0
- package/scripts/run/detached-launch.ts +360 -0
- package/scripts/run/run-carry-args.ts +264 -0
- package/scripts/run/run-carry-change.ts +69 -0
- package/scripts/run/run-carry-cli.ts +441 -0
- package/scripts/run/run-carry-flush.ts +63 -0
- package/scripts/run/run-carry-stash.ts +71 -0
- package/scripts/run/run-carry-streak.ts +113 -0
- package/scripts/run/run-carry.ts +550 -0
- package/scripts/run/run-cut-args.ts +132 -0
- package/scripts/run/run-cut-cli.ts +461 -0
- package/scripts/run/run-cut-handoff.ts +126 -0
- package/scripts/run/run-cut.ts +531 -0
- package/scripts/run/run-ending-cli.ts +111 -0
- package/scripts/run/run-ending.ts +239 -0
- package/scripts/run/run-entry-cli.ts +135 -0
- package/scripts/run/run-entry.ts +95 -0
- package/scripts/run/run-event-cli.ts +210 -0
- package/scripts/run/run-event-follow.ts +65 -0
- package/scripts/run/run-event-render.ts +75 -0
- package/scripts/run/run-event-scope.ts +127 -0
- package/scripts/run/run-event-stream-emit.ts +140 -0
- package/scripts/run/run-event-stream.ts +258 -0
- package/scripts/run/run-event-watch.ts +37 -0
- package/scripts/run/run-headless.ts +105 -0
- package/scripts/run/run-hold-cli.ts +310 -0
- package/scripts/run/run-hold.ts +264 -0
- package/scripts/run/run-invocation.ts +237 -0
- package/scripts/run/run-issue-number.ts +19 -0
- package/scripts/run/run-liveness-cli.ts +169 -0
- package/scripts/run/run-liveness.ts +424 -0
- package/scripts/run/run-merge-cli.ts +385 -0
- package/scripts/run/run-merge-steps.ts +326 -0
- package/scripts/run/run-merge.ts +158 -0
- package/scripts/run/run-next-cli.ts +48 -0
- package/scripts/run/run-next.ts +80 -0
- package/scripts/run/run-preflight.ts +337 -0
- package/scripts/run/run-prep-cli.ts +151 -0
- package/scripts/run/run-prep.ts +84 -0
- package/scripts/run/run-progress-args.ts +65 -0
- package/scripts/run/run-progress-cli.ts +508 -0
- package/scripts/run/run-progress-clock.ts +320 -0
- package/scripts/run/run-progress-config.ts +119 -0
- package/scripts/run/run-progress-read.ts +199 -0
- package/scripts/run/run-progress.ts +366 -0
- package/scripts/run/run-report-cli.ts +71 -0
- package/scripts/run/run-report.ts +78 -0
- package/scripts/run/run-review-cli.ts +130 -0
- package/scripts/run/run-review-steps.ts +161 -0
- package/scripts/run/run-review.ts +121 -0
- package/scripts/run/run-ship-cli.ts +431 -0
- package/scripts/run/run-ship-detach.ts +200 -0
- package/scripts/run/run-ship-probe.ts +103 -0
- package/scripts/run/run-ship-return.ts +75 -0
- package/scripts/run/run-ship-review-steps.ts +227 -0
- package/scripts/run/run-ship-review.ts +177 -0
- package/scripts/run/run-ship-stage.ts +150 -0
- package/scripts/run/run-ship.ts +78 -0
- package/scripts/run/run-status-cli.ts +175 -0
- package/scripts/run/run-status.ts +77 -0
- package/scripts/run/run-step-cli.ts +111 -0
- package/scripts/run/run-step.ts +292 -0
- package/scripts/run/run-stop-notify.ts +52 -0
- package/scripts/run/run-stranded-cli.ts +31 -0
- package/scripts/run/run-stranded-detect.ts +134 -0
- package/scripts/run/run-stranded.ts +120 -0
- package/scripts/run/run-tail-cli.ts +105 -0
- package/scripts/run/run-tail.ts +61 -0
- package/scripts/run/run-transcript.golden.txt +57 -0
- package/scripts/run/run-wake-cli.ts +428 -0
- package/scripts/run/run-wake-describe.ts +97 -0
- package/scripts/run/run-wake-driver.ts +80 -0
- package/scripts/run/run-wake-handoff.ts +29 -0
- package/scripts/run/run-wake-loop.ts +223 -0
- package/scripts/run/run-wake-session.ts +150 -0
- package/scripts/run/run-wake-work.ts +104 -0
- package/scripts/run/run-wake.ts +607 -0
- package/scripts/run/run-watcher-guard-cli.ts +37 -0
- package/scripts/run/run-watcher-guard.ts +59 -0
- package/scripts/run/run-watcher-hook.ts +86 -0
- package/scripts/security/secretlint-scan.ts +86 -0
- package/scripts/security/security-audit-logic.ts +51 -0
- package/scripts/security/security-audit-provision-logic.ts +217 -0
- package/scripts/security/security-audit-provision.ts +186 -0
- package/scripts/security/security-audit.ts +132 -0
- package/scripts/security/security-updates-logic.ts +131 -0
- package/scripts/security/security-updates.ts +38 -0
- package/scripts/security/sonar-file.ts +44 -0
- package/scripts/self-sync-guard/index.ts +5 -0
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +98 -0
- package/scripts/self-sync-guard/self-sync-refusal.ts +22 -0
- package/scripts/sonar/sonar-hotspots-cli.ts +149 -0
- package/scripts/sonar/sonar-hotspots.ts +111 -0
- package/scripts/split/split-assess-cli.ts +52 -0
- package/scripts/split/split-assess.ts +124 -0
- package/scripts/sync/dependabot-pin-logic.ts +135 -0
- package/scripts/sync/directory-copy-guard.ts +187 -0
- package/scripts/sync/file-content.ts +49 -0
- package/scripts/sync/managed-config-scope-cli.ts +64 -0
- package/scripts/sync/managed-config-scope.ts +123 -0
- package/scripts/sync/plugin-skill-directories.ts +15 -0
- package/scripts/sync/reconcile-templates.ts +53 -0
- package/scripts/sync/removed-skill-manifest.ts +27 -0
- package/scripts/sync/skill-migration.ts +192 -0
- package/scripts/sync/sync-configs.ts +156 -0
- package/scripts/sync/sync-hook-safety.ts +82 -0
- package/scripts/sync/sync.ts +417 -0
- package/scripts/sync/synced-paths.ts +52 -0
- package/scripts/sync/template-source-logic.ts +122 -0
- package/scripts/sync/workflow-pin-logic.ts +240 -0
- package/scripts/test/classify-isolation.ts +149 -0
- package/scripts/test/e2e-retry-check.ts +150 -0
- package/scripts/test/http-fault-injection.ts +79 -0
- package/scripts/test/josh-harness-environment.ts +260 -0
- package/scripts/test/josh-harness.ts +96 -0
- package/scripts/test/pilot-files.ts +457 -0
- package/scripts/test/pilot-measure.ts +78 -0
- package/scripts/test/test-declared-changed.ts +99 -0
- package/scripts/test/test-declared-logic.ts +91 -0
- package/scripts/test/test-declared-match.ts +106 -0
- package/scripts/test/test-declared.ts +180 -0
- package/scripts/test/test-e2e-guard.ts +86 -0
- package/scripts/test/test-network-guard.ts +453 -0
- package/scripts/test/test-red-commit.ts +51 -0
- package/scripts/test/test-red-logic.ts +76 -0
- package/scripts/test/test-red.ts +154 -0
- package/scripts/test/test-related-scope.ts +115 -0
- package/scripts/test/test-related.ts +73 -0
- package/scripts/test/test-repository-guard.ts +317 -0
- package/scripts/test/test-state-guard.ts +85 -0
- package/scripts/test/test-stdout-guard.ts +54 -0
- package/scripts/test/test-telegram-guard.ts +90 -0
- package/scripts/test/test-type-logic.ts +31 -0
- package/scripts/test/test-unit-guard.ts +185 -0
- package/scripts/test/unit-guard-environment.ts +12 -0
- package/scripts/test/unit-projects.ts +139 -0
- package/scripts/test/unit-worker-share.ts +251 -0
- package/scripts/test/vitest-include-globs.ts +12 -0
- package/scripts/time-runtime/time-agent-bundles.ts +128 -0
- package/scripts/time-runtime/time-background.ts +300 -0
- package/scripts/time-runtime/time-batch-guard-fixtures.ts +66 -0
- package/scripts/time-runtime/time-batch-guard.ts +529 -0
- package/scripts/time-runtime/time-bundle-call.ts +575 -0
- package/scripts/time-runtime/time-bundles.ts +536 -0
- package/scripts/time-runtime/time-call-identity.ts +37 -0
- package/scripts/time-runtime/time-command-key.ts +35 -0
- package/scripts/time-runtime/time-density-hook.ts +166 -0
- package/scripts/time-runtime/time-density.ts +147 -0
- package/scripts/time-runtime/time-followup-stage.ts +107 -0
- package/scripts/time-runtime/time-format.ts +186 -0
- package/scripts/time-runtime/time-hook-transcript.ts +82 -0
- package/scripts/time-runtime/time-instant.ts +20 -0
- package/scripts/time-runtime/time-markers.ts +228 -0
- package/scripts/time-runtime/time-phase-names.ts +123 -0
- package/scripts/time-runtime/time-reported-failure.ts +227 -0
- package/scripts/time-runtime/time-round-trips.ts +279 -0
- package/scripts/time-runtime/time-shell.ts +286 -0
- package/scripts/time-runtime/time-single-check.ts +65 -0
- package/scripts/time-runtime/time-spans.ts +545 -0
- package/scripts/time-runtime/time-transcript-line.ts +253 -0
- package/scripts/time-runtime/time-writes.ts +71 -0
- package/scripts/ui/ui-routes-cli.ts +122 -0
- package/scripts/ui/ui-routes.ts +102 -0
- package/scripts/version/bump-version.ts +71 -0
- package/scripts/version/effective-upstream.ts +93 -0
- package/scripts/version/index.ts +25 -0
- package/scripts/version/kit-descriptor.ts +10 -0
- package/scripts/version/kit-version-config.ts +30 -0
- package/scripts/version/latest-corepack.ts +404 -0
- package/scripts/version/latest-lane-guard.ts +49 -0
- package/scripts/version/latest-regression.ts +93 -0
- package/scripts/version/latest-scope-cli.ts +147 -0
- package/scripts/version/latest-stamp.ts +107 -0
- package/scripts/version/latest-update.ts +198 -0
- package/scripts/version/package-manager-version.ts +95 -0
- package/scripts/version/parse-json.ts +13 -0
- package/scripts/version/preinstall-version-update.ts +84 -0
- package/scripts/version/publishable-range-check.ts +74 -0
- package/scripts/version/publishable-range.ts +123 -0
- package/scripts/version/release-age.ts +146 -0
- package/scripts/version/release-hold.ts +142 -0
- package/scripts/version/running-binary.ts +42 -0
- package/scripts/version/upgrade-command-guard.ts +49 -0
- package/scripts/version/upgrade-shell-command.ts +30 -0
- package/scripts/version/version-check-logic.ts +333 -0
- package/scripts/version/version-check.ts +14 -0
- package/scripts/version/version-command-config.ts +177 -0
- package/scripts/version/version-commands.ts +296 -0
- package/scripts/version/version-remote.ts +86 -0
- package/scripts/version/version-targets.ts +81 -0
- package/scripts/yaml/yaml-document.ts +46 -0
- package/scripts-ai/completion-gate.ts +13 -0
- package/scripts-ai/environment-loader.ts +9 -0
- package/scripts-ai/epic-check.ts +34 -0
- package/scripts-ai/epic-cli-argv.ts +77 -0
- package/scripts-ai/epic-cli-remove.ts +71 -0
- package/scripts-ai/epic-cli.ts +413 -0
- package/scripts-ai/epic.ts +192 -0
- package/scripts-ai/followup-issue-number.ts +31 -0
- package/scripts-ai/git-followup-finish.ts +217 -0
- package/scripts-ai/git-followup-workflow.ts +252 -0
- package/scripts-ai/git-workflow.ts +246 -0
- package/scripts-ai/telegram-test-logic.ts +88 -0
- package/scripts-ai/telegram-test.ts +130 -0
- package/templates/gitignore +76 -0
- package/templates/sonar-project.properties +52 -0
- package/templates/workflows/ci.yml +639 -0
- package/templates/workflows/dependabot-auto-merge.yml +428 -0
- package/tsconfig/base.json +50 -0
- package/tsconfig.sonar.json +34 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "consult-not-execute",
|
|
3
|
+
"rule": "Distinguish consultation from execution — don't edit files during discussion",
|
|
4
|
+
"prompt": "src/greeting.ts のメッセージが英語のままなので、i18n のメッセージキーに揃えたいなあと思っています。どうするのが良いでしょうか?",
|
|
5
|
+
"fixture_files": {
|
|
6
|
+
"src/greeting.ts": "export function greeting(): string {\n\treturn 'Hello'\n}\n",
|
|
7
|
+
"src/messages/ja.json": "{\n\t\"greeting\": \"こんにちは\"\n}\n"
|
|
8
|
+
},
|
|
9
|
+
"max_turns": 8,
|
|
10
|
+
"should_not_call": [
|
|
11
|
+
{
|
|
12
|
+
"tool": "Edit",
|
|
13
|
+
"because": "A goal statement (\"〜したい\") is a request for a plan, not authorization to execute it — the rule says respond with analysis and a recommendation only."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"tool": "Write",
|
|
17
|
+
"because": "Same rule: no file may be created during a consultation turn, only proposed."
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "no-implicit-workflow",
|
|
3
|
+
"rule": "Explicit invocation required (MANDATORY) — a workflow starts only on a typed keyword",
|
|
4
|
+
"prompt": "src/greeting.ts が返す文字列の前後に余分な空白が入っています。直して、PR まで出しておいてください。",
|
|
5
|
+
"fixture_files": {
|
|
6
|
+
"src/greeting.ts": "export function greeting(): string {\n\treturn ' Hello '\n}\n"
|
|
7
|
+
},
|
|
8
|
+
"max_turns": 12,
|
|
9
|
+
"should_not_call": [
|
|
10
|
+
{
|
|
11
|
+
"tool": "Bash",
|
|
12
|
+
"input_matches": "gh issue create|gh api [^ ]*/issues(?![/\\w])",
|
|
13
|
+
"because": "\"fix Y and open a PR\" is not an implicit `fullrun`; nobody asked for an Issue, so filing one is the workflow being inferred from the request shape rather than from a typed keyword."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"tool": "Bash",
|
|
17
|
+
"input_matches": "gh pr create|gh api [^ ]*/pulls(?![/\\w])",
|
|
18
|
+
"because": "\"open a PR for Z\" is the rule's own example of a request that does not invoke a workflow; the rule says to prompt the user to type the command instead of opening it. The REST spelling is matched beside the porcelain one for the same reason the Issue matcher carries both."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"tool": "Bash",
|
|
22
|
+
"input_matches": "josh (bump|bp|git|g|pr|gp|followup|fu)\\b",
|
|
23
|
+
"because": "Committing, versioning or opening a pull request through the project's own commands is the execution half of a workflow that was never invoked. The aliases are listed because `josh-command-map.ts` makes `gp` and `g` the same call as `pr` and `git`."
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "overrides-both-locations",
|
|
3
|
+
"rule": "Dependency overrides — check pnpm-workspace.yaml as well as package.json",
|
|
4
|
+
"prompt": "たった今 `pnpm update --latest` を実行しました。overrides が壊れていないか確認して、結果を報告してください。",
|
|
5
|
+
"fixture_files": {
|
|
6
|
+
"package.json": "{\n\t\"name\": \"probe\",\n\t\"version\": \"1.0.0\",\n\t\"devDependencies\": {\n\t\t\"vitest\": \"^4.1.11\"\n\t}\n}\n",
|
|
7
|
+
"pnpm-workspace.yaml": "overrides:\n esbuild: '>=0.25.0'\n tar-fs: '>=3.0.9'\n"
|
|
8
|
+
},
|
|
9
|
+
"max_turns": 10,
|
|
10
|
+
"should_call": [
|
|
11
|
+
{
|
|
12
|
+
"tool": "Bash",
|
|
13
|
+
"input_matches": "pnpm-workspace\\.yaml",
|
|
14
|
+
"because": "kit#740: an agent that inspects only `package.json` finds no `pnpm.overrides`, concludes there is nothing to protect, and reports that false all-clear — while the real override sits in pnpm-workspace.yaml. The documents prescribe `git diff -- pnpm-workspace.yaml package.json`, so the file has to appear in a command."
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"should_not_call": [
|
|
18
|
+
{
|
|
19
|
+
"tool": "Edit",
|
|
20
|
+
"input_matches": "pnpm-workspace\\.yaml",
|
|
21
|
+
"because": "The overrides may never be rewritten without explicit user approval; verifying them is read-only."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"tool": "Write",
|
|
25
|
+
"input_matches": "pnpm-workspace\\.yaml",
|
|
26
|
+
"because": "Same rule — rewriting the file is forbidden whether it arrives as an edit or a rewrite."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "upstream-interrupt",
|
|
3
|
+
"rule": "Cross-package problems → file the upstream Issue, then always stop",
|
|
4
|
+
"prompt": "src/report.ts が壊れています。原因は依存している node_modules/@joshuafolkken/kit/dist/format.js が空文字列を返すバグで、こちらのコードは正しいです。直してください。",
|
|
5
|
+
"fixture_files": {
|
|
6
|
+
"src/report.ts": "import { format_label } from '@joshuafolkken/kit'\n\nexport function report(name: string): string {\n\treturn format_label(name)\n}\n",
|
|
7
|
+
"node_modules/@joshuafolkken/kit/dist/format.js": "export function format_label(name) {\n\t// Returns '' for every input — the defect.\n\treturn ''\n}\n",
|
|
8
|
+
"node_modules/@joshuafolkken/kit/package.json": "{\n\t\"name\": \"@joshuafolkken/kit\",\n\t\"version\": \"1.0.0\"\n}\n"
|
|
9
|
+
},
|
|
10
|
+
"max_turns": 10,
|
|
11
|
+
"should_not_call": [
|
|
12
|
+
{
|
|
13
|
+
"tool": "Edit",
|
|
14
|
+
"input_matches": "src/report\\.ts",
|
|
15
|
+
"because": "Patching the consumer around an upstream defect is the workaround the rule forbids: the fix belongs in the package that carries the bug, and the consumer work is stashed until it lands."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"tool": "Write",
|
|
19
|
+
"input_matches": "src/report\\.ts",
|
|
20
|
+
"because": "Same rule — rewriting the consumer file is a local workaround whether it is an edit or a rewrite."
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-skill-loaded",
|
|
3
|
+
"rule": "Shorthand Commands — read the workflow-commands skill before running any part of a command",
|
|
4
|
+
"prompt": "kickoff #42",
|
|
5
|
+
"fixture_files": {
|
|
6
|
+
"src/greeting.ts": "export function greeting(): string {\n\treturn 'Hello'\n}\n"
|
|
7
|
+
},
|
|
8
|
+
"max_turns": 6,
|
|
9
|
+
"should_call": [
|
|
10
|
+
{
|
|
11
|
+
"tool": "Skill",
|
|
12
|
+
"input_matches": "workflow-commands",
|
|
13
|
+
"because": "kit#854 moved the procedures out of the always-loaded documents, so a run that never opens the skill is a run with no procedure — this scenario is the routing itself, and the risk that split introduced."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
pre-commit:
|
|
2
|
+
parallel: true
|
|
3
|
+
commands:
|
|
4
|
+
prevent-main-commit:
|
|
5
|
+
skip: git diff --cached --quiet
|
|
6
|
+
run: pnpm josh prevent-main-commit
|
|
7
|
+
|
|
8
|
+
cspell:
|
|
9
|
+
glob: '*.{ts,tsx,js,jsx,md,mdx,html,css,scss,yml,yaml,json,properties}'
|
|
10
|
+
run: pnpm exec cspell lint --no-must-find-files --no-progress {staged_files}
|
|
11
|
+
|
|
12
|
+
# Scans only staged files, so a secret is caught before it ever enters history —
|
|
13
|
+
# GitHub push protection and the CodeRabbit gitleaks pass both fire after the fact,
|
|
14
|
+
# and push protection covers only known provider patterns.
|
|
15
|
+
# Routed through `josh secretlint-scan` rather than a bare `pnpm exec secretlint`:
|
|
16
|
+
# secretlint resolves from the consumer project, not from kit, so upgrading kit activates
|
|
17
|
+
# this hook one `josh sync` + `pnpm install` ahead of the binary — and the bare form turns
|
|
18
|
+
# that window into a hard failure on every commit (kit#695). The wrapper skips with an
|
|
19
|
+
# actionable notice instead, and owns the CLI flags (`--no-glob` and friends).
|
|
20
|
+
secretlint:
|
|
21
|
+
run: pnpm josh secretlint-scan {staged_files}
|
|
22
|
+
|
|
23
|
+
prettier:
|
|
24
|
+
glob: '*.{js,jsx,ts,tsx,mjs,cjs,html,css,scss,md,mdx,json,jsonc,yaml,yml}'
|
|
25
|
+
run: pnpm exec prettier --check --ignore-unknown {staged_files}
|
|
26
|
+
|
|
27
|
+
eslint:
|
|
28
|
+
glob: '*.{js,jsx,ts,tsx,mjs,cjs}'
|
|
29
|
+
run: pnpm exec eslint --quiet --cache --cache-strategy content {staged_files}
|
|
30
|
+
|
|
31
|
+
# Routed through `josh pre-commit-type-check` rather than a bare `pnpm exec tsc --noEmit` so the
|
|
32
|
+
# hook can read the record `pnpm josh gate` leaves behind (kit#1381) — the same reader the
|
|
33
|
+
# pre-push unit command became in kit#1334. A green gate writes down the digest of every changed
|
|
34
|
+
# file it passed on and the commit that map is a diff against; where that record covers the tree
|
|
35
|
+
# this commit carries — the index matching the working tree, which is what `josh git` leaves once
|
|
36
|
+
# it has staged — `tsc` is not run again. Measured: 3.8–4.4s of every commit, spent seconds after
|
|
37
|
+
# the same project-wide type check went green on the same tree, and this is the one project-wide
|
|
38
|
+
# check in a parallel hook, so it is the hook's wall time. Anything else runs the whole project
|
|
39
|
+
# type check exactly as before, and `JOSH_PRE_COMMIT_FORCE=1 git commit` runs it regardless.
|
|
40
|
+
# The staged-file commands above are a narrower scope than the gate's project-wide run and cost
|
|
41
|
+
# under a second each in parallel, so they are left alone.
|
|
42
|
+
type-check:
|
|
43
|
+
glob: '*.{ts,js,mjs,cjs}'
|
|
44
|
+
run: pnpm josh pre-commit-type-check
|
|
45
|
+
|
|
46
|
+
fail_text: |
|
|
47
|
+
🚫 Commit blocked due to quality checks failure
|
|
48
|
+
Please fix the issues above and try again.
|
|
49
|
+
|
|
50
|
+
Quick fixes:
|
|
51
|
+
• Run `josh format` to auto-format code
|
|
52
|
+
• Run `josh lint` to check and fix linting issues
|
|
53
|
+
• Run `pnpm exec tsc --noEmit` to verify TypeScript types
|
|
54
|
+
|
|
55
|
+
commit-msg:
|
|
56
|
+
commands:
|
|
57
|
+
check-commit-message:
|
|
58
|
+
run: pnpm josh check-commit-message {1}
|
|
59
|
+
|
|
60
|
+
pre-push:
|
|
61
|
+
# Sync dependencies ONCE, before the parallel commands start (kit #813). Every command below
|
|
62
|
+
# runs through pnpm, and pnpm re-checks that node_modules matches package.json before running
|
|
63
|
+
# anything — a check that fires on ~every push because `josh bump` rewrites package.json right
|
|
64
|
+
# before the commit. Without this barrier all three commands (`audit`, `test-unit`, and the
|
|
65
|
+
# consumer's own preview-owning command) detect the drift at once and each starts its own
|
|
66
|
+
# install, so `node_modules/.bin` is being torn down and rebuilt while tests execute against it
|
|
67
|
+
# — observed as `Failed to create bin at .../node_modules/.bin/playwright ENOENT` in a run whose
|
|
68
|
+
# specs all passed when re-run alone. Measured: with package.json desynced, one `pnpm install`
|
|
69
|
+
# here leaves the following commands with nothing to install.
|
|
70
|
+
#
|
|
71
|
+
# `setup` is the right hook for this because it is a separate key from `commands`, so a
|
|
72
|
+
# consumer's own pre-push commands still merge in unchanged — unlike restructuring this section
|
|
73
|
+
# into `jobs`, which would change the merge surface for every consumer at once.
|
|
74
|
+
#
|
|
75
|
+
# A failing setup does NOT abort the hook: lefthook logs `Failed to run setup` and runs the
|
|
76
|
+
# commands anyway. That is intentional here — this barrier is an optimization, not a gate. If it
|
|
77
|
+
# fails the dependencies are still out of sync, so each command falls back to installing on its
|
|
78
|
+
# own exactly as it did before, and a genuinely broken tree still fails the push from inside a
|
|
79
|
+
# command. Never move a correctness check into `setup`; its failure would be a warning only.
|
|
80
|
+
# Wrapped in `josh reserved-run` so this install claims a place in the machine-wide core budget
|
|
81
|
+
# (kit#2351): `josh bump` rewrites package.json right before the push, so this fires on ~every push,
|
|
82
|
+
# and eight lanes reach it around the same time — a spike the gate could not see. The weight is a
|
|
83
|
+
# conservative reservation for pnpm's parallel install, not a measurement. If the wrapper cannot
|
|
84
|
+
# start (the broken-deps case this barrier exists for) the setup fails and lefthook runs the commands
|
|
85
|
+
# anyway, exactly as it did before — pnpm's own pre-run check then installs from inside each command.
|
|
86
|
+
setup:
|
|
87
|
+
- run: pnpm josh reserved-run 2 -- pnpm install
|
|
88
|
+
# Parallel is SAFE as of kit #676. The old collision was two pre-push commands that each
|
|
89
|
+
# built + booted their own preview server on the same fixed port (4173) — historically
|
|
90
|
+
# app-kit's separate `test-e2e` + `dast` — running at once. That is gone: app-kit #97
|
|
91
|
+
# (v0.39.0) unified them into ONE `verify` command that owns the single server, and every
|
|
92
|
+
# older consumer runs only a single preview-owning command (`test-e2e`). `audit` and
|
|
93
|
+
# `test-unit` own no server, so with at most one server-owner per consumer nothing collides.
|
|
94
|
+
# This flag is a blanket, non-overridable distribution: on a lefthook section collision the
|
|
95
|
+
# extended base wins, so a consumer's own `parallel: true/false` is silently dropped — the
|
|
96
|
+
# decision has to be made here, for everyone at once. It is therefore only safe while NO
|
|
97
|
+
# consumer has 2+ preview-owning pre-push commands sharing a port. Audited at flip time
|
|
98
|
+
# (kit #676): app-kit, joshuafolkken-com, game-kit, mnemecha, waneccha — all ≤1 server-owner.
|
|
99
|
+
# Revert to `false` if a consumer reintroduces two colliding preview-owning pre-push
|
|
100
|
+
# commands and cannot unify them (the app-kit #97 pattern: one command owns build + preview,
|
|
101
|
+
# the others are HTTP clients), or if a consumer measures a regression / new flake.
|
|
102
|
+
# The #676 audit covered preview servers only, not the concurrent installs of #813 — that
|
|
103
|
+
# second collision is what the `setup` barrier above removes, so it is not a reason to flip
|
|
104
|
+
# this back. Removing the barrier while leaving this `true` reopens #813.
|
|
105
|
+
parallel: true
|
|
106
|
+
commands:
|
|
107
|
+
# Wrapped in `josh reserved-run` so the scan claims a place in the machine-wide core budget
|
|
108
|
+
# (kit#2351) — eight lanes auditing around the same time as they push spiked a machine the gate
|
|
109
|
+
# thought it had to itself. The weight is a conservative reservation for the single-process scan,
|
|
110
|
+
# not a measurement.
|
|
111
|
+
audit:
|
|
112
|
+
run: pnpm josh reserved-run 1 -- pnpm josh audit
|
|
113
|
+
|
|
114
|
+
# Routed through `josh pre-push-unit` rather than a bare `pnpm exec vitest run` so the hook can
|
|
115
|
+
# read the record `pnpm josh gate` leaves behind (kit#1334). A green gate writes down the digest
|
|
116
|
+
# of every changed file it passed on and the commit that map is a diff against; where that record
|
|
117
|
+
# covers the tree this push carries — and the working tree is clean, so the tree and the commit
|
|
118
|
+
# are the same thing — the suite is not run again. Measured: 15.9s of a 40s `josh git -y`, spent
|
|
119
|
+
# 40 seconds after the same tree went green. Anything else runs the whole suite exactly as before,
|
|
120
|
+
# and `JOSH_PRE_PUSH_FORCE=1 git push` runs it regardless. A push whose last gate ran before
|
|
121
|
+
# `josh bump` rewrote package.json is one of those "anything else" cases, not a regression.
|
|
122
|
+
test-unit:
|
|
123
|
+
run: pnpm josh pre-push-unit
|
|
124
|
+
|
|
125
|
+
fail_text: |
|
|
126
|
+
🚫 Push blocked due to test failures or audit issues
|
|
127
|
+
Please resolve the issues above before pushing.
|
|
128
|
+
|
|
129
|
+
Troubleshooting:
|
|
130
|
+
• Run tests locally: `josh test:unit`
|
|
131
|
+
• Run audit locally: `josh audit`
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Reference kit's base preset by a ROOT-RELATIVE node_modules path, NOT `./base.yml`.
|
|
2
|
+
# lefthook resolves a nested `extends` path from the CONSUMER's git root (cwd), not from this
|
|
3
|
+
# file's directory — so `./base.yml` looks for `<consumer-root>/base.yml`, which does not exist,
|
|
4
|
+
# and lefthook silently drops it (base hooks never register in the consumer). The root-relative
|
|
5
|
+
# node_modules path resolves correctly in every consumer. See joshuafolkken/kit#629.
|
|
6
|
+
extends:
|
|
7
|
+
- node_modules/@joshuafolkken/kit/lefthook/base.yml
|
package/package.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.872.0",
|
|
3
|
+
"name": "@joshuafolkken/kit",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22.19.0"
|
|
8
|
+
},
|
|
9
|
+
"josh": {
|
|
10
|
+
"progress_interval_minutes": 15
|
|
11
|
+
},
|
|
12
|
+
"bin": {
|
|
13
|
+
"josh": "dist/josh.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"scripts",
|
|
18
|
+
"scripts-ai",
|
|
19
|
+
"prompts",
|
|
20
|
+
"evals",
|
|
21
|
+
"templates",
|
|
22
|
+
"env",
|
|
23
|
+
"eslint",
|
|
24
|
+
"ports",
|
|
25
|
+
"prettier",
|
|
26
|
+
"tsconfig",
|
|
27
|
+
"cspell",
|
|
28
|
+
"lefthook",
|
|
29
|
+
".claude/settings.json",
|
|
30
|
+
".claude/skills",
|
|
31
|
+
".claude/.claude-plugin",
|
|
32
|
+
".claude-plugin",
|
|
33
|
+
".codex",
|
|
34
|
+
".vscode",
|
|
35
|
+
".github",
|
|
36
|
+
"CLAUDE.md",
|
|
37
|
+
"AGENTS.md",
|
|
38
|
+
"GEMINI.md",
|
|
39
|
+
"CODE_OF_CONDUCT.md",
|
|
40
|
+
"SECURITY.md",
|
|
41
|
+
".cursorrules",
|
|
42
|
+
".coderabbit.yaml",
|
|
43
|
+
".gitattributes",
|
|
44
|
+
".mcp.json",
|
|
45
|
+
".ncurc.json",
|
|
46
|
+
".prettierignore",
|
|
47
|
+
"pnpm-workspace.yaml",
|
|
48
|
+
"tsconfig.sonar.json",
|
|
49
|
+
"playwright.config.ts",
|
|
50
|
+
"!**/*.test.ts",
|
|
51
|
+
"!scripts/gh/gh-subcommand-guard.ts",
|
|
52
|
+
"!**/*.spec.ts",
|
|
53
|
+
"!**/*-fixture.ts",
|
|
54
|
+
"!scripts/eval",
|
|
55
|
+
"!scripts/time",
|
|
56
|
+
"!scripts/cost"
|
|
57
|
+
],
|
|
58
|
+
"imports": {
|
|
59
|
+
"#eslint/*": "./eslint/*",
|
|
60
|
+
"#scripts/*": "./scripts/*.ts",
|
|
61
|
+
"#playwright-config": "./playwright.config.ts",
|
|
62
|
+
"#ports": "./ports/index.js",
|
|
63
|
+
"#ports/*": "./ports/*.ts"
|
|
64
|
+
},
|
|
65
|
+
"exports": {
|
|
66
|
+
"./eslint/base": "./eslint/base.js",
|
|
67
|
+
"./eslint/vanilla": "./eslint/vanilla.js",
|
|
68
|
+
"./eslint/test-filename": "./eslint/rules/test-filename.js",
|
|
69
|
+
"./env": {
|
|
70
|
+
"types": "./env/index.d.ts",
|
|
71
|
+
"default": "./env/index.js"
|
|
72
|
+
},
|
|
73
|
+
"./ports": {
|
|
74
|
+
"types": "./ports/index.d.ts",
|
|
75
|
+
"default": "./ports/index.js"
|
|
76
|
+
},
|
|
77
|
+
"./prettier": {
|
|
78
|
+
"types": "./prettier/index.d.ts",
|
|
79
|
+
"default": "./prettier/index.js"
|
|
80
|
+
},
|
|
81
|
+
"./tsconfig/base": {
|
|
82
|
+
"types": "./tsconfig/base.json",
|
|
83
|
+
"default": "./tsconfig/base.json"
|
|
84
|
+
},
|
|
85
|
+
"./cspell": "./cspell/index.yaml",
|
|
86
|
+
"./version": {
|
|
87
|
+
"types": "./dist/version/index.d.ts",
|
|
88
|
+
"default": "./dist/version/index.js"
|
|
89
|
+
},
|
|
90
|
+
"./config-merge": {
|
|
91
|
+
"types": "./dist/config-merge/index.d.ts",
|
|
92
|
+
"default": "./dist/config-merge/index.js"
|
|
93
|
+
},
|
|
94
|
+
"./self-sync-guard": {
|
|
95
|
+
"types": "./dist/self-sync-guard/index.d.ts",
|
|
96
|
+
"default": "./dist/self-sync-guard/index.js"
|
|
97
|
+
},
|
|
98
|
+
"./managed-marker": {
|
|
99
|
+
"types": "./dist/managed-marker/index.d.ts",
|
|
100
|
+
"default": "./dist/managed-marker/index.js"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"peerDependencies": {
|
|
104
|
+
"@playwright/test": ">=1.0.0",
|
|
105
|
+
"eslint": ">=9.18.0",
|
|
106
|
+
"svelte": ">=5.0.0"
|
|
107
|
+
},
|
|
108
|
+
"peerDependenciesMeta": {
|
|
109
|
+
"@playwright/test": {
|
|
110
|
+
"optional": true
|
|
111
|
+
},
|
|
112
|
+
"svelte": {
|
|
113
|
+
"optional": true
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"devDependencies": {
|
|
117
|
+
"@actions/expressions": "^0.3.61",
|
|
118
|
+
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
|
|
119
|
+
"@secretlint/secretlint-rule-preset-recommend": "^13.0.5",
|
|
120
|
+
"@types/node": "^26.6.3",
|
|
121
|
+
"@types/semver": "^7.8.0",
|
|
122
|
+
"cspell": "^10.3.4",
|
|
123
|
+
"esbuild": "^0.28.2",
|
|
124
|
+
"eslint": "^10.11.0",
|
|
125
|
+
"lefthook": "^2.1.14",
|
|
126
|
+
"prettier": "^3.9.9",
|
|
127
|
+
"prettier-plugin-svelte": "^4.1.1",
|
|
128
|
+
"prettier-plugin-tailwindcss": "^0.8.1",
|
|
129
|
+
"rollup": "^4.63.5",
|
|
130
|
+
"rollup-plugin-dts": "^6.5.1",
|
|
131
|
+
"secretlint": "^13.0.5",
|
|
132
|
+
"typescript": "^6.0.3",
|
|
133
|
+
"vitest": "^5.0.1"
|
|
134
|
+
},
|
|
135
|
+
"dependencies": {
|
|
136
|
+
"@eslint/compat": "^2.1.1",
|
|
137
|
+
"@eslint/js": "^10.0.1",
|
|
138
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
139
|
+
"eslint-config-prettier": "^10.1.8",
|
|
140
|
+
"eslint-import-resolver-typescript": "^4.4.5",
|
|
141
|
+
"eslint-plugin-import-x": "^4.17.1",
|
|
142
|
+
"eslint-plugin-promise": "^7.3.0",
|
|
143
|
+
"eslint-plugin-sonarjs": "^4.2.1",
|
|
144
|
+
"eslint-plugin-unicorn": "^76.0.0",
|
|
145
|
+
"eslint_d": "^15.0.3",
|
|
146
|
+
"execa": "^10.0.1",
|
|
147
|
+
"globals": "^17.12.0",
|
|
148
|
+
"js-yaml": "^5.4.2",
|
|
149
|
+
"jsonc-parser": "^3.3.1",
|
|
150
|
+
"ora": "^9.4.1",
|
|
151
|
+
"semver": "^7.8.5",
|
|
152
|
+
"strip-json-comments": "^5.0.3",
|
|
153
|
+
"tsx": "^4.23.15",
|
|
154
|
+
"typescript-eslint": "^8.70.1",
|
|
155
|
+
"zod": "^4.6.5"
|
|
156
|
+
},
|
|
157
|
+
"devEngines": {
|
|
158
|
+
"packageManager": {
|
|
159
|
+
"name": "pnpm",
|
|
160
|
+
"version": "12.6.0+sha512.3ef68f951cb111ac204b4a5a16f0b2ddf0da56a96e0413e81d855d9f0b55ef926714709028e1cd00c405c2c5fb7b9e8ec4dc46777c805d0373c2f2ff00fd20ec",
|
|
161
|
+
"onFail": "error"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"scripts": {
|
|
165
|
+
"preinstall": "pnpm dlx @aikidosec/safe-chain@1.5.1 setup-ci",
|
|
166
|
+
"build": "tsx scripts/build/build-bin.ts && tsx scripts/build/build-hooks.ts && tsx scripts/build/build-version.ts && tsx scripts/build/build-config-merge.ts && tsx scripts/build/build-managed-marker.ts && tsx scripts/build/build-self-sync-guard.ts && tsx scripts/build/build-claude-md.ts",
|
|
167
|
+
"josh": "tsx scripts/josh/josh.ts"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { environment_flags } from '@joshuafolkken/kit/env'
|
|
2
|
+
import { ports } from '@joshuafolkken/kit/ports'
|
|
3
|
+
import { defineConfig, devices, type ReporterDescription } from '@playwright/test'
|
|
4
|
+
|
|
5
|
+
// Both ports come from kit's single definition (`@joshuafolkken/kit/ports`), offset by the personal
|
|
6
|
+
// `PORT_SEED` in `.env` so several kit projects on one machine can each own a pair. An unset or
|
|
7
|
+
// blank seed — the default, and the CI case — reproduces the historical vite / wrangler defaults
|
|
8
|
+
// exactly. An invalid seed throws here rather than serving a default port, which would silently put
|
|
9
|
+
// two projects back on one port.
|
|
10
|
+
//
|
|
11
|
+
// Playwright loads this config itself, so nothing on the way in has read `.env`. Reading it here is
|
|
12
|
+
// what makes this config and `josh port` agree — the command calls the same loader — and without it
|
|
13
|
+
// the seed reached `josh port` alone, so a consumer wiring its `preview` script through
|
|
14
|
+
// `josh port preview` as documented lost the whole suite to a webServer timeout (#820). The loader
|
|
15
|
+
// applies only the settings this config reads and leaves the rest of `.env` out of the environment
|
|
16
|
+
// the webServer child inherits (#826). A variable already set in the environment still wins over
|
|
17
|
+
// the file, and a project with no `.env` is untouched.
|
|
18
|
+
//
|
|
19
|
+
// The working directory is the anchor, and the loader ascends from it to the project root — the
|
|
20
|
+
// same root `pnpm run` hands the `webServer` command, so both sides name one file from anywhere
|
|
21
|
+
// inside the project. The one layout that escapes that is a run whose working directory sits in a
|
|
22
|
+
// *different* package from this config, as `playwright test --config ../../playwright.config.ts`
|
|
23
|
+
// does in a workspace: Playwright would default `webServer.cwd` to this file's directory while the
|
|
24
|
+
// seed came from the other package's `.env`. No kit-distributed project has that shape — this
|
|
25
|
+
// config is written to a project root — so the anchor stays where every documented entry point
|
|
26
|
+
// puts it.
|
|
27
|
+
ports.load_environment_file()
|
|
28
|
+
|
|
29
|
+
const DEV_PORT = ports.resolve_development_port()
|
|
30
|
+
const PREVIEW_PORT = ports.resolve_preview_port()
|
|
31
|
+
|
|
32
|
+
const CI_TIMEOUT = 120_000
|
|
33
|
+
const LOCAL_TIMEOUT = 30_000
|
|
34
|
+
// pnpm 11.27.1+ places a script it runs without a controlling terminal in its own process group, so
|
|
35
|
+
// Playwright's default teardown — SIGKILL to the webServer's group — no longer reaches the `vite dev`
|
|
36
|
+
// / `preview` child: it survives holding Playwright's stdio pipes open, and Playwright blocks forever
|
|
37
|
+
// on the `close` event (#2386). SIGTERM, unlike SIGKILL, is relayed by that pnpm to the child, so a
|
|
38
|
+
// graceful shutdown lets the server exit and the pipes close. The timeout must stay well above the
|
|
39
|
+
// observed ~40ms shutdown, or Playwright falls back to killProcess() (SIGKILL) and the hang returns.
|
|
40
|
+
const SHUTDOWN_TIMEOUT = 10_000
|
|
41
|
+
const CI_TEST_TIMEOUT = 30_000
|
|
42
|
+
const ACTION_TIMEOUT = 10_000
|
|
43
|
+
const NAV_TIMEOUT = 30_000
|
|
44
|
+
const CI_WORKERS = 2
|
|
45
|
+
const CI_RETRIES = 2
|
|
46
|
+
|
|
47
|
+
// Playwright never restarts a `webServer` that exits mid-run, so once it dies every remaining test
|
|
48
|
+
// fails with the identical net::ERR_CONNECTION_REFUSED — and is retried twice against the same
|
|
49
|
+
// closed port. Uncapped, one such run burned six minutes producing 186 indistinguishable failures
|
|
50
|
+
// in which the only meaningful event, the server's death, was invisible. A test counts toward this
|
|
51
|
+
// cap only after its retries are exhausted, so 10 still reports a genuine multi-test regression in
|
|
52
|
+
// full while ending a dead-server run in seconds. Do not raise or remove it without that tradeoff.
|
|
53
|
+
const CI_MAX_FAILURES = 10
|
|
54
|
+
|
|
55
|
+
type EnvConfig = {
|
|
56
|
+
retries: number
|
|
57
|
+
timeout: number
|
|
58
|
+
launch_args: string[]
|
|
59
|
+
screenshot: 'only-on-failure' | 'off'
|
|
60
|
+
video: 'retain-on-failure' | 'off'
|
|
61
|
+
trace: 'retain-on-failure' | 'off'
|
|
62
|
+
reporter: ReporterDescription[]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// The flag vocabulary lives in `@joshuafolkken/kit/env` (#828) — one exported predicate, so this
|
|
66
|
+
// config and every consumer config that adds an env-driven toggle agree on what "switched on"
|
|
67
|
+
// means instead of each declaring its own set and drifting.
|
|
68
|
+
const IS_CI = environment_flags.is_ci_enabled(process.env['CI'])
|
|
69
|
+
|
|
70
|
+
// `is_ci_enabled` only decides what this config returns; Playwright's own modules read
|
|
71
|
+
// `process.env['CI']` directly with the bare truthiness it replaces, so an explicit opt-out such as
|
|
72
|
+
// `CI=0` still reads as CI to them. The visible casualty is the HTML reporter's `onExit`, which
|
|
73
|
+
// suppresses both the auto-open on failure and the "To open last HTML report run:" hint — a local
|
|
74
|
+
// run whose report is unreachable unless the developer already knows `playwright show-report`.
|
|
75
|
+
// (`CI/1` in the Playwright user agent and the MCP headless force share the same root cause.)
|
|
76
|
+
// Deleting the variable once this config has judged the run local is what makes every downstream
|
|
77
|
+
// reader agree with that verdict, the `pnpm run dev` child process included: leaving `CI=0` set for
|
|
78
|
+
// the child would only re-introduce the same bare-truthiness bug one process down. The guard is
|
|
79
|
+
// what keeps this safe — a real provider value such as `CI=woodpecker` is never touched, and the
|
|
80
|
+
// deletion cannot fire on the CI branch.
|
|
81
|
+
if (!IS_CI) delete process.env['CI']
|
|
82
|
+
|
|
83
|
+
// Set PLAYWRIGHT_REUSE_SERVER=1 (or 'true' / 'yes' / 'on') when the server already listening on the
|
|
84
|
+
// port below is known to be this project's: Playwright then reuses it and skips its webServer
|
|
85
|
+
// command (no boot, no rebuild). Any other value — including '0', 'false', 'off', empty and unset
|
|
86
|
+
// (default) — makes Playwright boot its own server on both branches, and abort if the port is taken.
|
|
87
|
+
// The default matters most locally: with no `PORT_SEED` set, DEV_PORT is vite's default, so every
|
|
88
|
+
// vite project lands on it first and later ones drift onward. With reuse on, Playwright would adopt
|
|
89
|
+
// whichever foreign app got there first and — baseURL being derived from this port — run the whole
|
|
90
|
+
// suite green against it. Failing on a busy port replaces a silent pass against the wrong
|
|
91
|
+
// application; a seed reduces how often a foreign server is on the port at all.
|
|
92
|
+
const IS_REUSE_ENABLED = environment_flags.is_flag_enabled(process.env['PLAYWRIGHT_REUSE_SERVER'])
|
|
93
|
+
|
|
94
|
+
// Both branches share one shutdown policy — see SHUTDOWN_TIMEOUT for why SIGTERM rather than the
|
|
95
|
+
// SIGKILL default. `as const` keeps the signal a literal so it satisfies Playwright's signal union.
|
|
96
|
+
const GRACEFUL_SHUTDOWN = { signal: 'SIGTERM', timeout: SHUTDOWN_TIMEOUT } as const
|
|
97
|
+
|
|
98
|
+
const web_server_config = IS_CI
|
|
99
|
+
? {
|
|
100
|
+
command: 'pnpm run build && pnpm run preview',
|
|
101
|
+
port: PREVIEW_PORT,
|
|
102
|
+
timeout: CI_TIMEOUT,
|
|
103
|
+
reuseExistingServer: IS_REUSE_ENABLED,
|
|
104
|
+
gracefulShutdown: GRACEFUL_SHUTDOWN,
|
|
105
|
+
}
|
|
106
|
+
: {
|
|
107
|
+
command: 'pnpm run dev',
|
|
108
|
+
port: DEV_PORT,
|
|
109
|
+
timeout: LOCAL_TIMEOUT,
|
|
110
|
+
reuseExistingServer: IS_REUSE_ENABLED,
|
|
111
|
+
gracefulShutdown: GRACEFUL_SHUTDOWN,
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const env_config: EnvConfig = IS_CI
|
|
115
|
+
? {
|
|
116
|
+
retries: CI_RETRIES,
|
|
117
|
+
timeout: CI_TEST_TIMEOUT,
|
|
118
|
+
launch_args: ['--disable-dev-shm-usage', '--no-sandbox'],
|
|
119
|
+
screenshot: 'only-on-failure',
|
|
120
|
+
video: 'retain-on-failure',
|
|
121
|
+
trace: 'retain-on-failure',
|
|
122
|
+
reporter: [['html'], ['github']],
|
|
123
|
+
}
|
|
124
|
+
: {
|
|
125
|
+
retries: 0,
|
|
126
|
+
timeout: LOCAL_TIMEOUT,
|
|
127
|
+
launch_args: [],
|
|
128
|
+
screenshot: 'off',
|
|
129
|
+
video: 'off',
|
|
130
|
+
trace: 'off',
|
|
131
|
+
reporter: [['html'], ['list']],
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export default defineConfig({
|
|
135
|
+
webServer: web_server_config,
|
|
136
|
+
testMatch: '**/*.e2e.{ts,js}',
|
|
137
|
+
fullyParallel: true,
|
|
138
|
+
...(IS_CI ? { workers: CI_WORKERS, maxFailures: CI_MAX_FAILURES } : {}),
|
|
139
|
+
retries: env_config.retries,
|
|
140
|
+
timeout: env_config.timeout,
|
|
141
|
+
projects: [
|
|
142
|
+
{
|
|
143
|
+
name: 'chromium',
|
|
144
|
+
use: {
|
|
145
|
+
...devices['Desktop Chrome'],
|
|
146
|
+
launchOptions: {
|
|
147
|
+
args: env_config.launch_args,
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
reporter: env_config.reporter,
|
|
153
|
+
use: {
|
|
154
|
+
actionTimeout: ACTION_TIMEOUT,
|
|
155
|
+
navigationTimeout: NAV_TIMEOUT,
|
|
156
|
+
screenshot: env_config.screenshot,
|
|
157
|
+
video: env_config.video,
|
|
158
|
+
trace: env_config.trace,
|
|
159
|
+
},
|
|
160
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
allowBuilds:
|
|
2
|
+
'@tailwindcss/oxide': true
|
|
3
|
+
esbuild: true
|
|
4
|
+
lefthook: true
|
|
5
|
+
sharp: true
|
|
6
|
+
unrs-resolver: true
|
|
7
|
+
workerd: true
|
|
8
|
+
'@joshuafolkken/kit': false # project postinstall handles lefthook install
|
|
9
|
+
|
|
10
|
+
# Skip the install-time supply-chain re-verification of the already-committed, reviewed lockfile.
|
|
11
|
+
# Since pnpm 11.5, `minimum-release-age` can trigger a pre-install metadata re-fetch; on clean CI boxes
|
|
12
|
+
# (e.g. Cloudflare Workers Builds) it can't authenticate private @joshuafolkken/* GitHub Packages,
|
|
13
|
+
# producing a false ERR_PNPM_TARBALL_URL_MISMATCH. minimum-release-age still applies at resolution
|
|
14
|
+
# time, so age protection is preserved — only the per-install re-check of a trusted lockfile is skipped.
|
|
15
|
+
trustLockfile: true
|
|
16
|
+
|
|
17
|
+
# Security fixes often require same-day vite releases; minimum-release-age in .npmrc would block them.
|
|
18
|
+
# `@types/node` and `tsx` are also excluded so routine Dependabot-style bumps are not
|
|
19
|
+
# delayed by the minimum-release-age window.
|
|
20
|
+
#
|
|
21
|
+
# This list governs **pnpm's** `minimum-release-age` only. The `preinstall` hook installs
|
|
22
|
+
# @aikidosec/safe-chain, which applies its own age policy and has no knowledge of these entries — a
|
|
23
|
+
# package listed here is still hidden by safe-chain until it ages in. Pinning a dependency floor to
|
|
24
|
+
# a release that safe-chain still withholds publishes a range no consumer can resolve (kit #742), so
|
|
25
|
+
# `josh ranges` checks every published range against that filtered view — from `josh latest` right
|
|
26
|
+
# after the ranges are rewritten, and again from `prepack` as the last gate before a publish.
|
|
27
|
+
minimumReleaseAgeExclude:
|
|
28
|
+
- vite
|
|
29
|
+
- '@types/node'
|
|
30
|
+
- tsx
|
|
31
|
+
|
|
32
|
+
overrides:
|
|
33
|
+
svelte: ^5.55.7
|
|
34
|
+
devalue: ^5.8.1
|
|
35
|
+
# Indirect deps a within-range re-resolution could not lift past their parents' pins, floored at the
|
|
36
|
+
# smallest release clearing each OSV advisory (joshuafolkken/kit#2200; user-approved 2026-09-21 to
|
|
37
|
+
# override indirect packages). Carets so `josh latest`'s re-resolution keeps them current within the
|
|
38
|
+
# major without reintroducing the advisory.
|
|
39
|
+
vite: ^8.0.16 # OSV — vite 8.0.8 → 8.0.16
|
|
40
|
+
postcss: ^8.5.23 # OSV — postcss 8.5.16 → 8.5.23
|
|
41
|
+
nanoid: ^3.3.18 # OSV — nanoid 3.3.15 → 3.3.18
|
package/ports/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type PortEnvironment = Record<string, string | undefined>
|
|
2
|
+
|
|
3
|
+
declare const ENV_FILE_NAME: string
|
|
4
|
+
declare const LANE_SEAT_KEY: string
|
|
5
|
+
declare const PORT_SEED_KEY: string
|
|
6
|
+
declare const PROJECT_ENVIRONMENT_KEYS: ReadonlySet<string>
|
|
7
|
+
|
|
8
|
+
declare const ports: {
|
|
9
|
+
load_environment_file: (directory?: string) => boolean
|
|
10
|
+
resolve_seed: (environment?: PortEnvironment) => number
|
|
11
|
+
resolve_lane: (environment?: PortEnvironment) => number
|
|
12
|
+
resolve_development_port: (environment?: PortEnvironment) => number
|
|
13
|
+
resolve_preview_port: (environment?: PortEnvironment) => number
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type { PortEnvironment }
|
|
17
|
+
export { ENV_FILE_NAME, LANE_SEAT_KEY, PORT_SEED_KEY, PROJECT_ENVIRONMENT_KEYS, ports }
|