@joshuafolkken/kit 1.1455.0 → 1.1514.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/settings.json +6 -6
- package/.claude/skills/dependency-update/SKILL.md +26 -55
- package/.claude/skills/epic-commands/SKILL.md +83 -156
- package/.claude/skills/epic-commands/epic-bundle.md +51 -79
- package/.claude/skills/epic-commands/execution-waves.md +43 -81
- package/.claude/skills/verify-ui/SKILL.md +24 -50
- package/.claude/skills/workflow-commands/SKILL.md +7 -9
- package/.claude/skills/workflow-commands/background-commands.md +31 -46
- package/.claude/skills/workflow-commands/backlogrun-child.md +65 -85
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +86 -125
- package/.claude/skills/workflow-commands/backlogrun-park.md +68 -118
- package/.claude/skills/workflow-commands/backlogrun-progress.md +17 -28
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +17 -26
- package/.claude/skills/workflow-commands/backlogrun-steps.md +35 -52
- package/.claude/skills/workflow-commands/backlogrun.md +31 -50
- package/.claude/skills/workflow-commands/chain-rule.md +31 -40
- package/.claude/skills/workflow-commands/delegation.md +12 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +1 -3
- package/.claude/skills/workflow-commands/followup.md +55 -77
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -5
- package/.claude/skills/workflow-commands/fullrun.md +4 -6
- package/.claude/skills/workflow-commands/halfrun.md +3 -7
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +43 -60
- package/.claude/skills/workflow-commands/issue-scout.md +3 -2
- package/.claude/skills/workflow-commands/kickoff.md +65 -74
- package/.claude/skills/workflow-commands/latest-gate.md +2 -6
- package/.claude/skills/workflow-commands/needs-human-review.md +2 -5
- package/.claude/skills/workflow-commands/observation-filing.md +59 -118
- package/.claude/skills/workflow-commands/observation-ledger.md +52 -112
- package/.claude/skills/workflow-commands/pre-gate-cut.md +88 -142
- package/.claude/skills/workflow-commands/prerequisite.md +11 -17
- package/.claude/skills/workflow-commands/progress-watcher.md +23 -33
- package/.claude/skills/workflow-commands/prrun.md +3 -5
- package/.claude/skills/workflow-commands/retrospective.md +35 -54
- package/.claude/skills/workflow-commands/split-assessment.md +32 -58
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +54 -73
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/publish.yml +2 -2
- package/CLAUDE.md +7 -6
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +7 -6
- package/dist/commands/document-section-cli.js +67 -34
- package/dist/hooks/batch-guard.js +6 -6
- package/dist/hooks/chunk-4KKD2UTK.js +66 -0
- package/dist/hooks/{chunk-GPLGZ6IC.js → chunk-6TS2JD6D.js} +14 -3
- package/dist/hooks/chunk-7DSBJVFH.js +50 -0
- package/dist/hooks/{chunk-5H4SSDSD.js → chunk-A65Y4YOR.js} +3 -3
- package/dist/hooks/{chunk-3C4XRYG6.js → chunk-APUO6U4J.js} +102 -19
- package/dist/hooks/{chunk-IX6TTTI6.js → chunk-EFXE6C37.js} +8 -22
- package/dist/hooks/chunk-GP4IEC4O.js +20 -0
- package/dist/hooks/chunk-JP45SOCJ.js +56 -0
- package/dist/hooks/{chunk-OLMO72ON.js → chunk-LAOV7NLM.js} +1 -1
- package/dist/hooks/chunk-M4HGZV7U.js +83 -0
- package/dist/hooks/{chunk-TBJFTSUY.js → chunk-O6GDRNJB.js} +9 -7
- package/dist/hooks/{chunk-HFGWYGUV.js → chunk-PF2NZL2A.js} +5 -5
- package/dist/hooks/{chunk-WNLVGT7E.js → chunk-PTICX4OL.js} +4 -5
- package/dist/hooks/{chunk-HHI6FO3R.js → chunk-RT27QRJW.js} +763 -1515
- package/dist/hooks/{chunk-7WQBPLUN.js → chunk-SYOTDYCI.js} +1149 -1095
- package/dist/hooks/{chunk-LIAFCXL7.js → chunk-TNUMY6NL.js} +1519 -1332
- package/dist/hooks/chunk-UPUZF3AN.js +279 -0
- package/dist/hooks/{chunk-Z4XI7CZS.js → chunk-WK6SMBIC.js} +1932 -784
- package/dist/hooks/codex-hook-adapter.js +17 -14
- package/dist/hooks/duplicate-read-guard.js +7 -7
- package/dist/hooks/format-edited.js +5 -4
- package/dist/hooks/inputs.json +302 -247
- package/dist/hooks/investigation-guard.js +8 -11
- package/dist/hooks/pretool-guard.js +16 -13
- package/dist/hooks/session-lang.js +372 -26
- package/dist/hooks/stop-guard.js +2593 -189
- package/dist/josh.js +2128 -282
- package/dist/managed-marker/index.js +1 -2
- package/dist/version/index.js +15 -12
- package/eslint/base.js +2 -1
- package/eslint/rules/unicorn.js +16 -0
- package/lefthook/base.yml +5 -3
- package/package.json +14 -12
- package/prompts/coding-standards.md +12 -22
- package/prompts/collaboration-workflow/file-edits.md +25 -45
- package/prompts/collaboration-workflow/gh-rest.md +19 -36
- package/prompts/collaboration-workflow/glossary.md +5 -7
- package/prompts/collaboration-workflow/issue-citation.md +6 -14
- package/prompts/collaboration-workflow/issue-template.md +40 -32
- package/prompts/collaboration-workflow/lane-instructions.md +35 -0
- package/prompts/collaboration-workflow/operating-rules.md +33 -46
- package/prompts/collaboration-workflow/output-bounds.md +15 -15
- package/prompts/collaboration-workflow/overview.md +14 -19
- package/prompts/collaboration-workflow/plan-comment.md +13 -13
- package/prompts/collaboration-workflow/principles.md +57 -54
- package/prompts/collaboration-workflow/proposal-request.md +1 -9
- package/prompts/collaboration-workflow/report-format.md +41 -49
- package/prompts/collaboration-workflow/residency.md +15 -11
- package/prompts/collaboration-workflow/rule-delivery.md +7 -15
- package/prompts/collaboration-workflow/shell-body.md +10 -20
- package/prompts/collaboration-workflow/turn-batching.md +8 -14
- package/prompts/collaboration-workflow/upstream-interrupt.md +26 -34
- package/prompts/collaboration-workflow/wip-cap.md +26 -32
- package/prompts/collaboration-workflow.md +25 -25
- package/prompts/refactoring.md +33 -43
- package/prompts/review-rubric.md +84 -129
- package/prompts/review.md +110 -141
- package/prompts/sonar-hotspot-handling.md +22 -50
- package/prompts/testing-guide.md +48 -99
- package/scripts/adopt/adopt-toolkits.ts +2 -4
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-exit-record.ts +23 -1
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +9 -2
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/backlog/backlog-budget-cli.ts +1 -2
- package/scripts/backlog/backlog-budget.ts +4 -4
- package/scripts/backlog/backlog-drive-carried.ts +26 -0
- package/scripts/backlog/backlog-drive-cli.ts +10 -5
- package/scripts/backlog/backlog-drive-named.ts +3 -5
- package/scripts/backlog/backlog-drive-restore.ts +28 -2
- package/scripts/backlog/backlog-drive-seats.ts +27 -0
- package/scripts/backlog/backlog-drive.ts +11 -6
- package/scripts/backlog/backlog-occupied.ts +56 -0
- package/scripts/backlog/backlog-ready.ts +59 -15
- package/scripts/behavior/behavior-rules.ts +3 -2
- package/scripts/cost-runtime/codex-usage.ts +4 -2
- package/scripts/cost-runtime/cost-cli.ts +1 -2
- package/scripts/delegation/duplicate-read-guard.ts +2 -2
- package/scripts/delegation/investigation-guard.ts +15 -65
- package/scripts/delegation/investigation-reads.ts +1 -2
- package/scripts/discovery/repo-discovery.ts +4 -2
- package/scripts/discovery/repo-origin.ts +2 -4
- package/scripts/doctor/doctor-logic.ts +6 -3
- package/scripts/document/document-byte-budget.ts +28 -27
- package/scripts/document/document-byte-check.ts +1 -2
- package/scripts/document/document-section-cli.ts +17 -5
- package/scripts/document/entry-read-budget.ts +3 -3
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit-rationale.ts +8 -2
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-cli.ts +1 -2
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/epic/epic-chains.ts +6 -2
- package/scripts/epic/epic-close-comment.ts +1 -2
- package/scripts/followup/git-followup-workflow.ts +19 -1
- package/scripts/gate/check-inputs.ts +129 -0
- package/scripts/gate/check-reuse.ts +162 -0
- package/scripts/gate/core-budget.ts +93 -44
- package/scripts/gate/core-wait.ts +130 -0
- package/scripts/gate/free-cores.ts +49 -0
- package/scripts/gate/gate-ledger.ts +17 -3
- package/scripts/gate/gate-plan.ts +23 -1
- package/scripts/gate/gate-report.ts +15 -2
- package/scripts/gate/gate-run-steps.ts +150 -0
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/machine-capacity.ts +70 -11
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/verification-gate.ts +65 -127
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +24 -2
- package/scripts/gh/git-pr.ts +19 -3
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +16 -9
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +14 -5
- package/scripts/hooks/batch-guard.ts +5 -8
- package/scripts/hooks/format-edited-file.ts +10 -4
- package/scripts/hooks/pre-commit-lint.ts +91 -0
- package/scripts/hooks/pre-push-unit.ts +15 -4
- package/scripts/hooks/pretool-guard.ts +48 -79
- package/scripts/hooks/reserved-run.ts +1 -0
- package/scripts/hooks/run-hook.sh +10 -12
- package/scripts/hooks/step-zero-notice.ts +3 -2
- package/scripts/hooks/stop-actions.ts +204 -0
- package/scripts/hooks/stop-guard.ts +62 -21
- package/scripts/init/hook-command-rewrite.ts +6 -2
- package/scripts/init/hook-launch.ts +12 -7
- package/scripts/init/init-logic-deploy-vps.ts +4 -2
- package/scripts/issue/behavior-change-lint.ts +12 -6
- package/scripts/issue/expected-effect-lint.ts +59 -0
- package/scripts/issue/issue-cite-cli.ts +35 -15
- package/scripts/issue/issue-classification.ts +1 -1
- package/scripts/issue/issue-lint-cli.ts +5 -3
- package/scripts/issue/issue-scout-cli.ts +22 -16
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/josh/command-usage.ts +110 -0
- package/scripts/josh/file-map-stamp.ts +1 -3
- package/scripts/josh/hook-decision.ts +17 -2
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +55 -9
- package/scripts/josh/josh-commands-ai.ts +13 -0
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-hooks.ts +6 -0
- package/scripts/josh/josh-commands-lane.ts +10 -1
- package/scripts/josh/josh-commands-workflow.ts +5 -0
- package/scripts/josh/josh-logic.ts +6 -15
- package/scripts/josh/josh-usage-automation.ts +121 -0
- package/scripts/josh/josh-usage-backlog.ts +180 -0
- package/scripts/josh/josh-usage-developer.ts +230 -0
- package/scripts/josh/josh-usage-hooks.ts +38 -0
- package/scripts/josh/josh-usage-issue.ts +205 -0
- package/scripts/josh/josh-usage-review.ts +101 -0
- package/scripts/josh/josh-usage-run.ts +252 -0
- package/scripts/josh/josh-usage-session.ts +238 -0
- package/scripts/josh/josh-usage-workflow.ts +212 -0
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +20 -0
- package/scripts/lane/lane-await.ts +3 -2
- package/scripts/lane/lane-capacity.ts +8 -2
- package/scripts/lane/lane-check-stats.ts +56 -0
- package/scripts/lane/lane-child-invocation.ts +49 -5
- package/scripts/lane/lane-dispatch.ts +3 -3
- package/scripts/lane/lane-guard-policy.ts +5 -5
- package/scripts/lane/lane-handoff.ts +8 -1
- package/scripts/lane/lane-install.ts +12 -4
- package/scripts/lane/lane-ledger.ts +52 -1
- package/scripts/lane/lane-limit-cli.ts +8 -9
- package/scripts/lane/lane-load.ts +9 -2
- package/scripts/lane/lane-measure-cli.ts +4 -0
- package/scripts/lane/lane-parked.ts +18 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-process-load.ts +125 -0
- package/scripts/lane/lane-process-stats.ts +93 -0
- package/scripts/lane/lane-registry.ts +17 -10
- package/scripts/lane/lane-restart.ts +5 -26
- package/scripts/lane/lane-session-action.ts +146 -0
- package/scripts/lane/lane-session-broker.ts +68 -125
- package/scripts/lane/lane-spent.ts +14 -3
- package/scripts/lane/lane-stats.ts +1 -0
- package/scripts/lane/lane-withdraw-cli.ts +71 -0
- package/scripts/lane/lane-withdraw.ts +182 -0
- package/scripts/lint/format.ts +4 -4
- package/scripts/lint/lint-parallel.ts +10 -3
- package/scripts/lint/lint-related-scope.ts +4 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/telegram-test.ts +10 -5
- package/scripts/overrides/lockfile-overrides.ts +1 -3
- package/scripts/propagate/propagate.ts +1 -2
- package/scripts/release/release-progress.ts +3 -2
- package/scripts/report/report-format-reference.ts +2 -0
- package/scripts/report/report-lint.ts +7 -4
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +205 -0
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/review/review-record-cli.ts +6 -2
- package/scripts/rules/agent-model.ts +59 -0
- package/scripts/rules/delivered-rules.ts +11 -2
- package/scripts/rules/destructive-command.ts +6 -9
- package/scripts/rules/direct-filing.ts +3 -7
- package/scripts/rules/early-heartbeat.ts +7 -18
- package/scripts/rules/file-body.ts +6 -13
- package/scripts/rules/filing-cap.ts +4 -6
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/git-force.ts +5 -9
- package/scripts/rules/guard-remedy.ts +117 -0
- package/scripts/rules/implementation-cut.ts +37 -35
- package/scripts/rules/index-guard.ts +4 -7
- package/scripts/rules/issue-comments.ts +67 -16
- package/scripts/rules/josh-git-bare.ts +3 -6
- package/scripts/rules/lane-background.ts +10 -21
- package/scripts/rules/lane-carry-conflict.ts +7 -17
- package/scripts/rules/lane-interactive-ask.ts +6 -11
- package/scripts/rules/lane-park.ts +5 -13
- package/scripts/rules/lane-split-park.ts +2 -7
- package/scripts/rules/lane-switch-main.ts +9 -12
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-consulted.ts +4 -5
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/piped-verification.ts +84 -32
- package/scripts/rules/poll-loop.ts +7 -17
- package/scripts/rules/pre-gate-cut.ts +7 -21
- package/scripts/rules/prior-comment-read.ts +7 -5
- package/scripts/rules/protected-files.ts +5 -9
- package/scripts/rules/raw-field-body.ts +3 -7
- package/scripts/rules/rule-body-guard.ts +4 -11
- package/scripts/rules/rule-list.ts +4 -1
- package/scripts/rules/rule-registry-rows.ts +10 -0
- package/scripts/rules/rule-registry.ts +7 -4
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value.ts +7 -1
- package/scripts/rules/run-tail-rule.ts +6 -22
- package/scripts/rules/shell-body-trigger.ts +4 -6
- package/scripts/rules/shell-segments.ts +22 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rules.ts +164 -77
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/rules/test-declared-commit.ts +4 -10
- package/scripts/rules/third-party-write.ts +5 -10
- package/scripts/rules/worktree-guard.ts +5 -12
- package/scripts/run/board/run-board-cli.ts +2 -0
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-github.ts +19 -3
- package/scripts/run/board/run-board-header.ts +4 -1
- package/scripts/run/board/run-board-idle.ts +31 -0
- package/scripts/run/board/run-board-labels.ts +2 -0
- package/scripts/run/board/run-board-layout.ts +1 -1
- package/scripts/run/board/run-board-read.ts +25 -12
- package/scripts/run/board/run-board-reason.ts +17 -4
- package/scripts/run/board/run-board-render-legend.ts +1 -0
- package/scripts/run/board/run-board-render-slot.ts +1 -1
- package/scripts/run/board/run-board-render-waits.ts +41 -0
- package/scripts/run/board/run-board-render.ts +6 -1
- package/scripts/run/board/run-board-row-yield.ts +1 -0
- package/scripts/run/board/run-board-state.ts +9 -0
- package/scripts/run/board/run-board-status.ts +89 -23
- package/scripts/run/board/run-board-thanks.ts +7 -2
- package/scripts/run/board/run-board-tick.ts +37 -8
- package/scripts/run/carry/run-carry-args.ts +1 -3
- package/scripts/run/carry/run-carry-conversation.ts +7 -2
- package/scripts/run/cut/run-cut-cli.ts +18 -22
- package/scripts/run/cut/run-cut-decline.ts +72 -0
- package/scripts/run/cut/run-cut-ready.ts +74 -0
- package/scripts/run/cut/run-cut-report.ts +29 -0
- package/scripts/run/cut/run-cut.ts +10 -1
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-render.ts +1 -0
- package/scripts/run/event/run-event-scope.ts +19 -1
- package/scripts/run/event/run-event-stream-emit.ts +13 -6
- package/scripts/run/event/run-event-stream.ts +4 -0
- package/scripts/run/hold/run-hold-cli.ts +14 -3
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +13 -4
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-cli.ts +16 -42
- package/scripts/run/merge/run-merge-ship.ts +59 -1
- package/scripts/run/merge/run-merge-signals.ts +99 -0
- package/scripts/run/merge/run-merge-steps.ts +11 -1
- package/scripts/run/merge/run-merge.ts +22 -9
- package/scripts/run/run-ending.ts +31 -3
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +5 -10
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-preflight.ts +1 -2
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/run-stop-notify.ts +1 -2
- package/scripts/run/run-watcher-guard.ts +6 -3
- package/scripts/run/ship/run-ship-cli.ts +5 -12
- package/scripts/run/ship/run-ship-detach.ts +9 -0
- package/scripts/run/ship/run-ship-next.ts +10 -2
- package/scripts/run/ship/run-ship-overlap.ts +195 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +33 -15
- package/scripts/run/ship/run-ship-preflight.ts +28 -2
- package/scripts/run/ship/run-ship-return.ts +31 -7
- package/scripts/run/ship/run-ship-review-steps.ts +25 -14
- package/scripts/run/ship/run-ship-review.ts +15 -2
- package/scripts/run/ship/run-ship-steps.ts +1 -1
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-sync.ts +14 -6
- package/scripts/run/tidy/run-tidy-cli.ts +3 -3
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -2
- package/scripts/safe-chain/project-config.ts +7 -2
- package/scripts/sync/sync-hook-safety.ts +8 -2
- package/scripts/test/test-e2e-guard.ts +30 -5
- package/scripts/test/test-unit-guard.ts +16 -1
- package/scripts/test/unit-worker-share.ts +26 -3
- package/scripts/time-runtime/time-batch-guard.ts +3 -3
- package/scripts/time-runtime/time-hook-transcript.ts +3 -2
- package/scripts/time-runtime/time-shell.ts +39 -4
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/scripts/version/effective-upstream.ts +3 -4
- package/scripts/version/kit-version-config.ts +8 -2
- package/scripts/version/latest-corepack.ts +1 -2
- package/scripts/version/release-hold.ts +11 -4
- package/scripts/version/version-commands.ts +12 -4
- package/templates/gitignore +6 -2
- package/dist/hooks/chunk-D5QBTOCZ.js +0 -68
- package/dist/hooks/chunk-UT7YC3N2.js +0 -56
|
@@ -1,38 +1,32 @@
|
|
|
1
1
|
# 独立した呼び出しは同じターンに載せる(joshuafolkken/kit#1304)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
常駐側には [`rule-delivery.md`](./rule-delivery.md) →「配送されている規則」への導線だけが残り、規則本文は `pnpm josh batch:guard` が効く瞬間に配送する。
|
|
4
4
|
|
|
5
5
|
## 何を求めているか
|
|
6
6
|
|
|
7
|
-
**判断は 1 問で決まる。**
|
|
8
|
-
|
|
9
7
|
> **この呼び出しの入力は、いま出していない別の呼び出しの結果に依存しているか。**
|
|
10
8
|
|
|
11
|
-
- no →
|
|
9
|
+
- no → その呼び出しは、依存していない他の呼び出しと同じターンに載せる
|
|
12
10
|
- yes → 結果を待つ。別のターンになるのが正しい
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
ファイル 3 つを 3 ターンで読む、`git status` と `pnpm josh issue:state` を別ターンに分ける — いずれも禁止。**費用は仕事の量ではなく往復の回数にある。**
|
|
15
13
|
|
|
16
14
|
## 判断基準は「依存の有無」であって、呼び出しの種類ではない
|
|
17
15
|
|
|
18
|
-
**`Edit` も同じ規則の対象である** —
|
|
16
|
+
**`Edit` も同じ規則の対象である** — 別ファイルや離れた領域への編集は同じターンに載せる。依存があるなら分ける: `grep` の行番号で `sed -n` を出す、`git switch` の成否を見てから次を出す、Edit の前に対象を読む(省略できない)。
|
|
19
17
|
|
|
20
18
|
## 検証ゲートとレビューは往復を減らす対象ではない
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
ゲートの失敗の内訳を読まずに進む、差分を一部だけ読んで「指摘なし」とする(`output-bounds.md`)、チェックを落とす — いずれも禁止。**往復を減らすのは「同じ仕事を少ないターンで出す」ことであって、「仕事を減らす」ことではない。**
|
|
23
21
|
|
|
24
22
|
## ガードが見えないところ — ここでは自分で規則を当てる
|
|
25
23
|
|
|
26
|
-
中断中のターン・`Write`・書き込む `josh` サブコマンドや連鎖した行・ツールを呼ばないターン・ガードが `off`
|
|
24
|
+
中断中のターン・`Write`・書き込む `josh` サブコマンドや連鎖した行・ツールを呼ばないターン・ガードが `off` のレーン子でも、規則は同じく拘束する。
|
|
27
25
|
|
|
28
26
|
## 事後の計測 — 実行タイミングレポートの `Round trips:`
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
round trip は 1 ターンがまとめて出した呼び出しのかたまり 1 つで、1.50 呼び出し/往復を下回ると 1 行の指摘が出る。`tool-less turns`(発話だけのターン)は自分で減らす。実装は `scripts/time-runtime/time-round-trips.ts`。
|
|
31
29
|
|
|
32
30
|
## 実装中の独立編集に効く合成コマンド(joshuafolkken/kit#2202)
|
|
33
31
|
|
|
34
|
-
**Step 0
|
|
35
|
-
|
|
36
|
-
## マーカーテスト
|
|
37
|
-
|
|
38
|
-
`scripts/rules/turn-batching-rule.test.ts` が固定する。内訳は `docs/maintainers/turn-batching-rationale.md` → "What the marker test pins"。
|
|
32
|
+
**Step 0 が対象ファイルを列挙したら、`pnpm josh read:files <path> …` で読み取りを 1 回に畳み、続く独立した編集は `pnpm josh edit:files` の 1 呼び出しで送る**(`old` が 1 箇所に一致しなければ拒否される)。ガードが `read:files` / `edit:files` を手渡したら、その 1 呼び出しで出し直す。形式は `docs/josh-commands-run.md` →「`josh read:files`」と「`josh edit:files`」。
|
|
@@ -1,59 +1,51 @@
|
|
|
1
1
|
## 別パッケージ起因の問題は割り込み Issue で対応する
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
作業中(実装・検証・レビュー対応のどの段階でも)に見つけた問題が別パッケージ(依存パッケージ、配布元の kit / `josh` ツールなど)に起因するとき、現在のリポジトリ内のローカル回避策(ハック・パッチ・回避コード)で押し切らず、**根本原因を対象パッケージ側で解決する**。`CLAUDE.md` → "Cross-package problems → file the upstream Issue, then stop" の本体。
|
|
4
4
|
|
|
5
5
|
### 無条件ルール: 起票は確認なし、停止は必ず
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**「今の作業をブロックするか」は判定しない。** 上流の欠陥は、発見した時点で例外なく同じ手順を通る。
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- **`backlogrun` の中では、停止の範囲がセッション全体ではなくその子 Issue に限定される**。起票と回避策の禁止は変わらない。上流の修正を待つか先送りするかは人の判断なので、該当の子に `needs-decision` を付けて park し、依存していない他の子へ進む(→ `.claude/skills/workflow-commands/backlogrun-park.md` → "Only a person's judgement carries `needs-decision`")
|
|
9
|
+
- 起票は Tier A — 起票するか・どこへ起票するかをユーザーに確認しない。対象は first-party に限る(→「第三者リポジトリへの書き込みは Tier C(明示指示が必要)」)
|
|
10
|
+
- **停止は無条件**。Issue を作ってから停止し、待つか先送りするかはユーザーが決める
|
|
11
|
+
- `backlogrun` の中では、停止はその子 Issue に限る。起票と回避策の禁止は変わらない。該当の子に `needs-decision` を付けて park し、依存していない他の子へ進む(→ `.claude/skills/workflow-commands/backlogrun-park.md` → "Only a person's judgement carries `needs-decision`")
|
|
13
12
|
|
|
14
13
|
### 実行中のリポジトリ自身のラン機構の不具合
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
**実行中のリポジトリ自身はこの手順の対象外である。** kit の中で kit のラン機構(`backlog:drive`、`run:wake`、`run:carry`、レーン、分類、カウンタ、ガードなど)の不具合を見つけたら、上流 Issue で停止する代わりに、このリポジトリの割り込みとして次を行う。
|
|
17
16
|
|
|
18
17
|
1. **起票する** — `pnpm josh issue:file "<title>" --body-file <path> --depth <n> --route interrupt --label priority:high`。上限は効かない(`wip-cap.md` →「割り込み起票 — 上限が効かない側」の条件 2)
|
|
19
|
-
2. **止まらずに直す** —
|
|
20
|
-
3. **再開できるなら自分で再開し、動くことを確かめる** —
|
|
21
|
-
4. **人に打ち直しを求めるのは再開の手段が無いときだけ** — `mismatch`(別の起動の記録)、別の生きた所有者の `busy
|
|
22
|
-
5. **`needs-decision`
|
|
18
|
+
2. **止まらずに直す** — 壊れた機構を迂回せず、検証ゲートも緩めない。`backlogrun` の中では割り込みを次の子にし、着地後に塞がれていた子へ戻る(プールでは `priority:high` が先頭、epic の下では `wip-cap.md` の手順 3 で挿入、名前指定のランでは `pnpm josh lane:launch <N>` で自分で dispatch)。バッチの外では `wip-cap.md` の手順 4 どおり、打つべき `fullrun #<N>` を報告して止まる
|
|
19
|
+
3. **再開できるなら自分で再開し、動くことを確かめる** — 修正のマージ後、手渡し済み・所有者が死んだ記録・監督プロセスの停止(`warning` Telegram)には `pnpm josh run:wake --start`、`run:carry` の `standing` には `pnpm josh run:carry --resume "<invocation>" --owner "$PPID"` を打つ。`pnpm josh run:wake --list` が監督プロセスを示し、ログに次の子の dispatch が現れることを確かめて報告する
|
|
20
|
+
4. **人に打ち直しを求めるのは再開の手段が無いときだけ** — `mismatch`(別の起動の記録)、別の生きた所有者の `busy`。新しい承認を宣言するのは人だけ
|
|
21
|
+
5. **`needs-decision` を付けない**(`.claude/skills/workflow-commands/backlogrun-park.md` → "Only a person's judgement carries `needs-decision`")
|
|
23
22
|
|
|
24
23
|
手順:
|
|
25
24
|
|
|
26
|
-
1. **現在の作業を退避する**: `git stash push -u -m "upstream-interrupt: paused #<N>"`(WIP
|
|
27
|
-
2. **進行中の Issue
|
|
28
|
-
3.
|
|
29
|
-
4. **`confirmation` Telegram を送って停止する**: 上流 Issue の URL
|
|
30
|
-
5. **元の作業を再開する**:
|
|
25
|
+
1. **現在の作業を退避する**: `git stash push -u -m "upstream-interrupt: paused #<N>"`(WIP コミットでも可)
|
|
26
|
+
2. **進行中の Issue に状況を書く**: `pnpm josh issue:comment <N> --body-file <path>` で、stash したこと、中断理由(どの別パッケージのどんな問題か)、新 Issue へのリンク(`## Upstream issues` 見出しの下に `owner/repo#N` 形式、→「起票元へのバックリンク」)
|
|
27
|
+
3. **対象パッケージのリポジトリに Issue を作成する(確認なし)**: `pnpm josh issue:file "<root-cause title>" --body-file <body-file> --depth <n> --route tier-a --repo <owner>/<repo>`(joshuafolkken/kit#1083)。検査・分類ラベル・重複探し・`epic:bundle` はコマンドが行う(`docs/josh-commands-backlog.md` → `josh issue:file`)。根本原因・再現・期待結果を `prompts/collaboration-workflow/issue-template.md` の Step 1 のテンプレで書き、`## Origin` 節に起票元 Issue を `owner/repo#N` 形式で書く
|
|
28
|
+
4. **`confirmation` Telegram を送って停止する**: 上流 Issue の URL と何が止まっているかを書く(→ `CLAUDE.md` → "Mid-workflow stop notification (`confirmation`)")
|
|
29
|
+
5. **元の作業を再開する**: 上流の修正がマージされた、またはユーザーが先送りを明示判断した後に `pnpm josh stash:pop "upstream-interrupt: paused #<N>"` で復元する(`operating-rules.md` → "no-self-staging")。上流 Issue を割り込みで実装するかもユーザーが決める
|
|
31
30
|
|
|
32
31
|
### 第三者リポジトリへの書き込みは Tier C(明示指示が必要)
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
「起票は確認なし」は first-party だけに成り立つ。
|
|
35
34
|
|
|
36
|
-
-
|
|
37
|
-
- **
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
- **third-party 報告の証拠バー**(下書きを提示する前に満たす):
|
|
41
|
-
- **自プロジェクトの外で成立する最小再現**(対象の依存だけを入れた素の scaffold)。用意できない場合は「プロジェクト組み込みの再現しかない」ことを下書きに明記する
|
|
42
|
-
- **本文の全主張が検証済み**であること。推測を事実として書かない
|
|
43
|
-
- 同じ欠陥を扱う**既存 Issue の検索**
|
|
44
|
-
- **取り下げも外向きの行為**: 既に起票した third-party Issue のクローズ・編集・コメントも、同じく明示指示を要する
|
|
45
|
-
- **正しい診断は公開の許可ではない**。所見の正しさは、この節のどの要求も免除しない(事例: `docs/maintainers/upstream-interrupt-rationale.md` → "Why a correct diagnosis is not authorization")
|
|
35
|
+
- **判定は `pnpm josh repo:party [<owner/repo>]` が答える**: `first-party` / `third-party` / `unknown`(unknown は third-party 扱いしない)。fork や contribute しているだけの org リポジトリも third-party
|
|
36
|
+
- **third-party への書き込みは種別を問わず Tier C**: Issue・コメント・PR・Discussion・レビュー、既存 Issue のクローズ・編集も、その turn のユーザーの明示指示なしに行わない。正しい診断も許可ではない
|
|
37
|
+
- third-party と判明したら: (1) 自分たちの側の Issue に証拠込みで所見を `## Upstream candidate` 見出しで記録する(`## Upstream issues` は使わない)。(2) 報告本文の下書きをその Issue 内に用意する。(3) 対象プロジェクト名と報告内容を書いた `confirmation` Telegram を送って停止する
|
|
38
|
+
- 下書きの前に揃える証拠: 自プロジェクトの外で成立する最小再現(無ければ「プロジェクト組み込みの再現しかない」と明記)、全主張の検証、既存 Issue の検索
|
|
46
39
|
|
|
47
40
|
### 検証ゲートを緩めることも「回避策」である
|
|
48
41
|
|
|
49
|
-
|
|
42
|
+
**上流の欠陥に合わせて `lint` / `tsc` / `cspell` / unit / E2E の出力を絞り込む・狭める・読み替えることは、ローカルパッチと同じ違反**で、同じ停止を引き起こす。
|
|
50
43
|
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
44
|
+
- 例: 上流が配布する設定で生成されるディレクトリ由来の型エラーを除外し、「プロジェクトソースはエラー 0」としてゲートを通す
|
|
45
|
+
- 絞り込みを開示しても、ルールを満たしたことにはならない
|
|
46
|
+
- ゲートを調整したくなった時点が、このルールの発火点である
|
|
54
47
|
|
|
55
48
|
注意:
|
|
56
49
|
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
- このルールは横断ドキュメント(CLAUDE.md「Cross-package problems → file the upstream Issue, then stop」)のカノニカル参照
|
|
50
|
+
- 上流起因と分かったら選択肢は根本対応だけ。「今回は軽いから即席で」はない
|
|
51
|
+
- 上流パッケージのマージ等の共有状態操作は Tier A ではない。それぞれのワークフローの明示起動を要する
|
|
@@ -1,73 +1,67 @@
|
|
|
1
1
|
# オープン Issue の WIP 上限
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
**この規則は常駐しておらず、配送もされない — 起票するコマンドそのものが守らせる**(joshuafolkken/kit#1524 で常駐を外し、その後 `rule:guard` の配送行も外した)。`pnpm josh issue:file` が起票の前に件数を数え、上限を超えて免除が無ければ何も送らずに保留し、そこで拒否・2 つの免除・免除を決める 3 条件を印字する(`gh issue create` や `…/issues` への `title` 付き POST による直接起票は `direct-filing` が毎回拒否するので、起票は必ずこのコマンドを通る)。事前の拒否と出し直しの往復は無い。保留文の実体は `scripts/issue/issue-wip.ts` の `HELD_MESSAGE` にある(固定するテストは `docs/maintainers/wip-cap-rationale.md` → "Tests that pin the wording")。
|
|
6
|
-
|
|
7
|
-
背景・測定・経緯は保守者向けの文書にあり(上限が要る理由は `docs/maintainers/wip-cap-rationale.md` → "Why a cap is needed — the measurement")、ラン中に読む必要はない。
|
|
3
|
+
常駐も配送もされず(joshuafolkken/kit#1524)、起票コマンドが守らせる(直接起票は `direct-filing` が拒否する)。保留文は `scripts/issue/issue-wip.ts` の `HELD_MESSAGE`。
|
|
8
4
|
|
|
9
5
|
## 規則
|
|
10
6
|
|
|
11
7
|
**オープン Issue が上限を超えている状態で新しく起票するときは、先に 1 件閉じる。**
|
|
12
8
|
|
|
13
|
-
**件数は `pnpm josh issue:file` が起票の前に数える**(joshuafolkken/kit#3181
|
|
9
|
+
**件数は `pnpm josh issue:file` が起票の前に数える**(joshuafolkken/kit#3181、`docs/josh-commands-backlog.md` → "`josh issue:file`")。手や記憶で数えない。
|
|
14
10
|
|
|
15
|
-
- **上限は 30。**
|
|
16
|
-
- コマンドは起票先(`--repo`
|
|
17
|
-
-
|
|
11
|
+
- **上限は 30。** 一次情報は `scripts/issue/issue-wip.ts` の `WIP_CAP`(他の文書にこの数字を書かない)。
|
|
12
|
+
- コマンドは起票先(`--repo` 指定時はそのリポジトリ)のオープン Issue を epic 込みで数えて `wip:` 行に印字し、超過して免除が無ければ何も送らずに保留し、免除の問いを印字する。
|
|
13
|
+
- 免除の宣言: `--route interrupt`(下の 3 条件)、`--route split` / `--route tier-a`(実行が詰まる起票)はルート自体が宣言になる。ルートの無い実行が詰まる起票(利用者が `new` と打った入口など)は `--over-cap` を付けて出し直す。裁量起票(`--route review-cap` を含む)に `--over-cap` を付けてはならない。
|
|
18
14
|
|
|
19
15
|
## 超過時の手順
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
起票の種類で分岐する。**上限が効くのは裁量側だけである。**
|
|
22
18
|
|
|
23
|
-
**判定するのは「起票 1 件」ではなく「起票のひとまとまり」である。**
|
|
19
|
+
**判定するのは「起票 1 件」ではなく「起票のひとまとまり」である。** 分割の子と epic、割り込みと上流バックリンク、`epic:bundle` が `create_epic` と答えた epic は、先頭で 1 回だけ判定し、通ったら全体を作り切る。
|
|
24
20
|
|
|
25
21
|
### 裁量起票 — 上限が効く側
|
|
26
22
|
|
|
27
|
-
レビュー上限の branch 2
|
|
23
|
+
レビュー上限の branch 2 と、改善や気付きの記録 — 起票しなくても現在の実行が完了するもの。
|
|
28
24
|
|
|
29
|
-
1.
|
|
30
|
-
2. **正直に閉じられるものが無いなら、起票しない。** 場所を空けるために、まだ意味のある Issue
|
|
31
|
-
3.
|
|
25
|
+
1. まず 1 件閉じる(終わった・重複・取って代わられた・不要のものだけ。クローズコメントにどれかを 1 行書く)。
|
|
26
|
+
2. **正直に閉じられるものが無いなら、起票しない。** 場所を空けるために、まだ意味のある Issue を閉じてはならない。
|
|
27
|
+
3. 起票しない指摘は起票以外の出口を取る。レビュー指摘なら branch 3(PR 本文に 1 行残して落とす)で、これは既定の出口であり上限に阻まれたときの代替ではない。
|
|
32
28
|
|
|
33
29
|
### 実行が詰まる起票 — 上限が効かない側
|
|
34
30
|
|
|
35
|
-
前提 Issue(`prerequisite.md`)、別パッケージ起因の割り込み Issue、ユーザーが `new` と打った入口、`issue:scout`
|
|
31
|
+
前提 Issue(`prerequisite.md`)、別パッケージ起因の割り込み Issue、ユーザーが `new` と打った入口、`issue:scout` が重複無しと答えた新規作業、そして分割判定が作る子 Issue と epic。
|
|
36
32
|
|
|
37
|
-
- **上限を理由に止めない。**
|
|
38
|
-
- **分割の子がここに入る理由**: 分割を検出した `fullrun` / `halfrun` は「子と epic を起票して
|
|
39
|
-
-
|
|
33
|
+
- **上限を理由に止めない。**
|
|
34
|
+
- **分割の子がここに入る理由**: 分割を検出した `fullrun` / `halfrun` は「子と epic を起票して STOP」と定められており(`fullrun.md` / `halfrun.md`)、分割するかは分割判定の側が決める。
|
|
35
|
+
- 超過した事実は完了報告に 1 行書く(例: 「オープン 34 件で起票した」)。
|
|
40
36
|
|
|
41
37
|
### 割り込み起票 — 上限が効かない側(3 条件で機械的に決める)
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
**別パッケージ起因の割り込みとは別の区分である。** あちらは上流リポジトリへ起票して停止する手順(`upstream-interrupt.md`、`route:tier-a`)で、実行が詰まる側に属する。ここで言う割り込みは、**このリポジトリの欠陥で、発見したランをブロックしていないもの**を指す。
|
|
39
|
+
重大な欠陥の発見は、ランを止めていなくても捨てない。対象はこのリポジトリの欠陥で、発見したランをブロックしていないもの(別パッケージ起因は `upstream-interrupt.md`、実行が詰まる側)。
|
|
46
40
|
|
|
47
41
|
#### 3 条件 — 該当するかは判断ではない
|
|
48
42
|
|
|
49
|
-
|
|
43
|
+
次のいずれかを満たすかだけで決める。
|
|
50
44
|
|
|
51
45
|
1. **検証が誤った答えを返す** — 緑であってはならないものが緑になる、または無実の変更が赤にされる
|
|
52
|
-
2. **文書化された作業手順が完了できなくなる** — 並列レーン、`josh propagate`
|
|
46
|
+
2. **文書化された作業手順が完了できなくなる** — 並列レーン、`josh propagate` など、ドキュメントの手順が現状のコードでは通らない
|
|
53
47
|
3. **データが失われる、またはリポジトリの外に書き込む**
|
|
54
48
|
|
|
55
|
-
**3 つのいずれにも当たらない発見は、従来どおり裁量側の出口を取る。**
|
|
49
|
+
**3 つのいずれにも当たらない発見は、従来どおり裁量側の出口を取る。** 改善案、設計上の好み、未検証の疑い、「あとで直したい」がこれに当たる。
|
|
56
50
|
|
|
57
|
-
**深刻さの自己申告は条件ではない。**
|
|
51
|
+
**深刻さの自己申告は条件ではない。**
|
|
58
52
|
|
|
59
53
|
#### 該当したときの手順
|
|
60
54
|
|
|
61
|
-
1. **上限に関係なく起票する。** 1
|
|
55
|
+
1. **上限に関係なく起票する。** 1 件閉じることを条件にしない。本文の検査、分類ラベルの付与、重複探し、`epic:bundle` はコマンドが行う(`docs/josh-commands-backlog.md` → `josh issue:file`)。
|
|
62
56
|
|
|
63
57
|
```bash
|
|
64
58
|
pnpm josh issue:file "<title>" --body-file <body-file> --depth <n> --route interrupt
|
|
65
59
|
```
|
|
66
60
|
|
|
67
|
-
2.
|
|
68
|
-
3.
|
|
69
|
-
4.
|
|
61
|
+
2. 超過している事実と当たった条件の番号を、両方とも本文に 1 行書く(例:「オープン 37 件で起票。3 条件のうち 2(文書化された手順が完了できない)に該当」)。
|
|
62
|
+
3. 次に実行されるものとして挿入する。epic の下なら `pnpm josh epic --add <E> <N>` で**位置を指定せずに**追加する(`<E>` が epic、`<N>` が割り込み)。**`--before` / `--after` を使ってはならない。** それらは `blocked-by` を書き込み、**偽の依存関係**になる。**順序は実行側が持つ** — 先に提示させたいときは行だけを動かす `--order-before <M>` を使う。**epic の下に無いなら挿入先そのものが無い**ので、4 だけを行う。
|
|
63
|
+
4. 着手は既にある承認の内側でのみ、指示を待たずに行う。`backlogrun` の中なら次の子として着手してよい。バッチの外では `CLAUDE.md` →「Explicit invocation required」が効き、起票と挿入まで済ませて打つべきコマンド(`fullrun #<N>`)を報告して止まる。**割り込みは上限の例外であって、明示起動規則の例外ではない。**
|
|
70
64
|
|
|
71
|
-
|
|
65
|
+
起票と、実行されるようにするところまでが 1 つのまとまりである — epic の下で追加しなければ `epic:next` は候補に出さない。**epic の外にある割り込みでは、まとまりの後半は 4 の報告そのもの**である。
|
|
72
66
|
|
|
73
|
-
|
|
67
|
+
割り込みを単独で走らせるか並列レーンで走らせるかは `.claude/skills/workflow-commands/backlogrun-lanes.md` → "A solo run" に従う。
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
# Issue-Driven Collaboration Workflow
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
このドキュメントは、Claude / Cursor / Gemini を含む複数の AI ツールで共通に使う Issue 駆動の共同作業ワークフローの**索引**である。
|
|
3
|
+
複数の AI ツール(Claude / Cursor / Gemini)で共通に使う Issue 駆動ワークフローの**索引**。
|
|
6
4
|
|
|
7
5
|
## この索引の使い方
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
人間が読むための索引であり、規則を定める場所ではない。常駐の引き金は `CLAUDE.md`、実行中の手順は `.claude/skills/workflow-commands/`、各話題の規則は下表のファイルが一次情報である。
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
- 下表から必要な 1 本だけを開く。
|
|
10
|
+
- 他の文書から話題を指すときは、索引でなく**本文があるファイルを直接指す**([`residency.md`](./collaboration-workflow/residency.md))。
|
|
12
11
|
|
|
13
|
-
| 話題
|
|
14
|
-
|
|
|
15
|
-
| Overview
|
|
16
|
-
| Step 1: Issue 作成テンプレ
|
|
17
|
-
| Step 2: 提案依頼(AI 共通)
|
|
18
|
-
| Step 3:
|
|
19
|
-
| 報告フォーマット(平易な概要 + 技術詳細)
|
|
20
|
-
|
|
|
21
|
-
| オープン Issue の WIP 上限
|
|
22
|
-
| 別パッケージ起因の問題は割り込み Issue
|
|
23
|
-
| 原則 —
|
|
24
|
-
| ファイル編集はコマンド本文に本文を載せない
|
|
25
|
-
| 本文をシェルの二重引用符に載せない
|
|
26
|
-
| 独立した呼び出しは同じターンに載せる
|
|
27
|
-
| `gh` は REST(`gh api`)で書く
|
|
28
|
-
| 常駐ドキュメントと skill
|
|
29
|
-
| 引き金つき配送 — 規則を効く瞬間に届ける
|
|
30
|
-
| コマンド出力が文脈へ持ち込む量の上限
|
|
31
|
-
| 運用ルール
|
|
32
|
-
| 用語集 — lane・cut・hold・park
|
|
12
|
+
| 話題 | ファイル |
|
|
13
|
+
| ---------------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
14
|
+
| Overview | [`overview.md`](./collaboration-workflow/overview.md) |
|
|
15
|
+
| Step 1: Issue 作成テンプレ | [`issue-template.md`](./collaboration-workflow/issue-template.md) |
|
|
16
|
+
| Step 2: 提案依頼(AI 共通) | [`proposal-request.md`](./collaboration-workflow/proposal-request.md) |
|
|
17
|
+
| Step 3: 計画コメントの記録と通知 | [`plan-comment.md`](./collaboration-workflow/plan-comment.md) |
|
|
18
|
+
| 報告フォーマット(平易な概要 + 技術詳細) | [`report-format.md`](./collaboration-workflow/report-format.md) |
|
|
19
|
+
| Issue はリンク+セッション言語の短い要約で参照する | [`issue-citation.md`](./collaboration-workflow/issue-citation.md) |
|
|
20
|
+
| オープン Issue の WIP 上限 | [`wip-cap.md`](./collaboration-workflow/wip-cap.md) |
|
|
21
|
+
| 別パッケージ起因の問題は割り込み Issue | [`upstream-interrupt.md`](./collaboration-workflow/upstream-interrupt.md) |
|
|
22
|
+
| 原則 — クローン禁止・シンプル第一・相談と実行・最新優先 等 | [`principles.md`](./collaboration-workflow/principles.md) |
|
|
23
|
+
| ファイル編集はコマンド本文に本文を載せない | [`file-edits.md`](./collaboration-workflow/file-edits.md) |
|
|
24
|
+
| 本文をシェルの二重引用符に載せない | [`shell-body.md`](./collaboration-workflow/shell-body.md) |
|
|
25
|
+
| 独立した呼び出しは同じターンに載せる | [`turn-batching.md`](./collaboration-workflow/turn-batching.md) |
|
|
26
|
+
| `gh` は REST(`gh api`)で書く | [`gh-rest.md`](./collaboration-workflow/gh-rest.md) |
|
|
27
|
+
| 常駐ドキュメントと skill の分担 | [`residency.md`](./collaboration-workflow/residency.md) |
|
|
28
|
+
| 引き金つき配送 — 規則を効く瞬間に届ける | [`rule-delivery.md`](./collaboration-workflow/rule-delivery.md) |
|
|
29
|
+
| コマンド出力が文脈へ持ち込む量の上限 | [`output-bounds.md`](./collaboration-workflow/output-bounds.md) |
|
|
30
|
+
| 運用ルール | [`operating-rules.md`](./collaboration-workflow/operating-rules.md) |
|
|
31
|
+
| 用語集 — lane・cut・hold・park など | [`glossary.md`](./collaboration-workflow/glossary.md) |
|
|
32
|
+
| headless のレーン子・レビューの起動時の規則セット | [`lane-instructions.md`](./collaboration-workflow/lane-instructions.md) |
|
package/prompts/refactoring.md
CHANGED
|
@@ -1,103 +1,93 @@
|
|
|
1
1
|
# リファクタリング支援プロンプト
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- **「リファクタリングを提案して」** → 分析・提案のみ行い、実装はユーザーに委ねる
|
|
6
|
-
- **「リファクタリングして」** → 優先度高・中を自動実施し、同一セッション内で収束するまで繰り返す
|
|
3
|
+
- 「リファクタリングを提案して」→ 分析・提案のみ。実装はユーザーに委ねる
|
|
4
|
+
- 「リファクタリングして」→ 優先度高・中を自動実施し、同一セッション内で収束するまで繰り返す
|
|
7
5
|
|
|
8
6
|
---
|
|
9
7
|
|
|
10
8
|
## 対象と候補の算出(`pnpm josh refactor:scan`)
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
対象ファイル・スコープ拡張・lint 候補の集計・収束判定は `pnpm josh refactor:scan` が計算する。手作業で grep せず、まずこれを実行する(joshuafolkken/kit#2180、詳細は `docs/josh-commands.md` の `josh refactor:scan`)。
|
|
13
11
|
|
|
14
12
|
```bash
|
|
15
13
|
pnpm josh refactor:scan
|
|
16
14
|
```
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- **候補の集計**: プロジェクト自身の eslint に JSON で問い合わせ、次を件数と file:line で印字する — 行数・複雑度(`max-lines` / `max-lines-per-function` / `complexity` / `sonarjs/cognitive-complexity`)、型の安全性(`@typescript-eslint/no-explicit-any`)、名前空間エクスポート(`local/namespace-object-export`)、重複コード(`sonarjs/no-identical-functions`)、変数名の書式(`@typescript-eslint/naming-convention`)、重複文字列(`sonarjs/no-duplicate-string`)、マジックナンバー(`@typescript-eslint/no-magic-numbers`)、未使用コード(低優先度: `@typescript-eslint/no-unused-vars`)。件数は gate の eslint と同一なので `pnpm josh gate` と食い違わない。
|
|
23
|
-
- **収束判定**: 高・中優先度の候補が0件なら `verdict: clear`、残っていれば `verdict: candidates`。これが「優先度高・中が0件」の判定である。低優先度(未使用コード)は報告のみで収束判定には数えない。
|
|
16
|
+
- 対象ファイル: 作業ツリーの変更+main との差分+未追跡ファイル。いずれも無ければ `scripts/` 配下。`demo`・`src/routes/stories`・先頭に `/* @refactor-ignore */` を持つファイルは除外。
|
|
17
|
+
- スコープ拡張: import グラフを双方向に最大3段階たどり、新規0件で止める。拡張後の集合を印字する。
|
|
18
|
+
- **候補の集計**: eslint の件数と file:line — 行数・複雑度(`max-lines` / `max-lines-per-function` / `complexity` / `sonarjs/cognitive-complexity`)、型の安全性(`@typescript-eslint/no-explicit-any`)、名前空間エクスポート(`local/namespace-object-export`)、重複コード(`sonarjs/no-identical-functions`)、変数名の書式(`@typescript-eslint/naming-convention`)、重複文字列(`sonarjs/no-duplicate-string`)、マジックナンバー(`@typescript-eslint/no-magic-numbers`)、未使用コード(低優先度: `@typescript-eslint/no-unused-vars`)。件数は `pnpm josh gate` の eslint と同一。
|
|
19
|
+
- 収束判定: 高・中優先度の候補が0件なら `verdict: clear`、残れば `verdict: candidates`。低優先度は報告のみで数えない。
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
行数はコード行数(`max-lines` / `max-lines-per-function` は `skipBlankLines` と `skipComments` 有効)。`wc -l` ではなくこのコマンドの報告で判断する。
|
|
26
22
|
|
|
27
23
|
---
|
|
28
24
|
|
|
29
25
|
## コマンドが見ない、目視で残すもの
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
次の2つは機械判定できないため、コマンドの結果に加えて必ず目視で確認する:
|
|
32
28
|
|
|
33
|
-
- **副作用の冪等性**: intersection observer
|
|
34
|
-
- **似た UI 構造**:
|
|
29
|
+
- **副作用の冪等性**: 一度だけ実行すべき副作用(intersection observer・イベントハンドラ・コールバック)に、状態チェックで早期 return するガード節があるか。
|
|
30
|
+
- **似た UI 構造**: 複数箇所の同じ UI パターンを、props で差を吸収する共通コンポーネントにまとめられないか。
|
|
35
31
|
|
|
36
32
|
---
|
|
37
33
|
|
|
38
34
|
## 「リファクタリングを提案して」の動作
|
|
39
35
|
|
|
40
|
-
1. `
|
|
41
|
-
2.
|
|
42
|
-
3.
|
|
43
|
-
4.
|
|
44
|
-
5. このプロンプトの内容説明は不要。直接提案に移る
|
|
36
|
+
1. `refactor:scan` で候補を洗い出し、目視2項目で補う
|
|
37
|
+
2. 高・中優先度 → すべて提案(件数制限なし)/すべて低優先度なら最大3つ
|
|
38
|
+
3. 実装はせず、コメントでなく実装可能なサンプルコードを示す
|
|
39
|
+
4. このプロンプトの説明はせず、直接提案に移る
|
|
45
40
|
|
|
46
41
|
---
|
|
47
42
|
|
|
48
43
|
## 「リファクタリングして」の動作
|
|
49
44
|
|
|
50
|
-
|
|
45
|
+
対象範囲は「対象ファイル」と同一。
|
|
51
46
|
|
|
52
47
|
```text
|
|
53
|
-
[
|
|
54
|
-
[
|
|
55
|
-
[1回目] refactor:scan の候補 + 目視2項目で網羅的分析 → 優先度高・中をすべて実施
|
|
48
|
+
[テスト準備] 対象のふるまいを検証する unit/E2E テストを先に実装し、グリーンを確認してから構造変更を始める
|
|
49
|
+
[1回目] refactor:scan の候補 + 目視2項目 → 優先度高・中をすべて実施
|
|
56
50
|
[2回目以降] refactor:scan を再実行 → 漏れがあれば実施
|
|
57
|
-
[
|
|
58
|
-
[完了] verdict: clear かつ目視2項目も0件 → 低優先度のみ報告して完了
|
|
51
|
+
[完了] `verdict: clear` かつ目視2項目も0件 → 低優先度のみ報告して完了
|
|
59
52
|
```
|
|
60
53
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
---
|
|
54
|
+
- 高・中が0件になるまで、ユーザーの再依頼なしに繰り返す
|
|
55
|
+
- 低優先度は自動実施せず報告のみ
|
|
56
|
+
- 毎回「N回目の分析」「残り候補: X件」と進捗を示す
|
|
66
57
|
|
|
67
58
|
## 部分的に lint が当たる項目(目視で補う)
|
|
68
59
|
|
|
69
|
-
lint
|
|
60
|
+
lint が一部の面しか見ない項目だけを挙げる。コーディング規約・命名規則は `CLAUDE.md` を参照。
|
|
70
61
|
|
|
71
62
|
### 高優先度
|
|
72
63
|
|
|
73
|
-
- **責務の分離**:
|
|
74
|
-
- **リテラル型の保持**:
|
|
64
|
+
- **責務の分離**: 行数が収まっていても複数責任が混在していれば、再利用可能・独立した機能を別ファイルに分ける(`max-lines` は大きさだけを見る)。
|
|
65
|
+
- **リテラル型の保持**: データ配列は `as const satisfies T` でリテラル型を保つ(型注釈のみでは `string` に widen される。`prefer-as-const` は肩代わりしない)。
|
|
75
66
|
|
|
76
67
|
### 中優先度
|
|
77
68
|
|
|
78
|
-
- **変数名の意味**: `@typescript-eslint/naming-convention`
|
|
79
|
-
- **類似コードの共通化**: `sonarjs/no-identical-functions`
|
|
69
|
+
- **変数名の意味**: `@typescript-eslint/naming-convention` は書式だけを見る。意味が不明確・実態と合わない名前は見直す。
|
|
70
|
+
- **類似コードの共通化**: `sonarjs/no-identical-functions` は完全一致だけを検出する。似ているが同一でないコードは目視で共通化を判断する。
|
|
80
71
|
|
|
81
72
|
### 低優先度
|
|
82
73
|
|
|
83
|
-
- **不要コメントの整理**:
|
|
74
|
+
- **不要コメントの整理**: 冗長・陳腐化したコメントを削除する。
|
|
84
75
|
|
|
85
76
|
---
|
|
86
77
|
|
|
87
78
|
## 基本方針
|
|
88
79
|
|
|
89
|
-
-
|
|
90
|
-
- **可読性・保守性・パフォーマンス・AI コストは同列で、どれも悪化させない**(`prompts/collaboration-workflow/principles.md` → "quality-priority")
|
|
80
|
+
- 可読性・保守性・パフォーマンス・AI コストは同列で、どれも悪化させない(`prompts/collaboration-workflow/principles.md` → "quality-priority")
|
|
91
81
|
- コードクローンの排除・メソッド抽出・共通コンポーネント化は必ず分析・提案に含める
|
|
92
|
-
-
|
|
93
|
-
-
|
|
82
|
+
- `async () => await fn()` → `() => fn()` の簡素化は提案しない
|
|
83
|
+
- 提案が無ければ無理に提案しない
|
|
94
84
|
|
|
95
85
|
---
|
|
96
86
|
|
|
97
87
|
## 提案の形式
|
|
98
88
|
|
|
99
|
-
各提案:
|
|
89
|
+
各提案: 優先度 / 問題点 / 改善案と効果 / サンプルコード(プロジェクト規約準拠、lint エラーなし)/ 影響ファイル
|
|
100
90
|
|
|
101
91
|
## 実装後の品質保証(絶対遵守)
|
|
102
92
|
|
|
103
|
-
実装後は `read_lints` → `pnpm run lint`
|
|
93
|
+
実装後は `read_lints` → `pnpm run lint` の順で全関与ファイルを確認し、エラー0件になるまで修正する。エラーが残ったまま完了報告しない。
|