@joshuafolkken/kit 1.1455.0 → 1.1471.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/skills/dependency-update/SKILL.md +26 -55
- package/.claude/skills/epic-commands/SKILL.md +87 -148
- package/.claude/skills/epic-commands/epic-bundle.md +45 -77
- package/.claude/skills/epic-commands/execution-waves.md +44 -81
- package/.claude/skills/verify-ui/SKILL.md +25 -50
- package/.claude/skills/workflow-commands/background-commands.md +36 -47
- package/.claude/skills/workflow-commands/backlogrun-child.md +72 -85
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +91 -121
- package/.claude/skills/workflow-commands/backlogrun-park.md +73 -117
- package/.claude/skills/workflow-commands/backlogrun-progress.md +7 -9
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +11 -20
- package/.claude/skills/workflow-commands/backlogrun-steps.md +43 -52
- package/.claude/skills/workflow-commands/chain-rule.md +24 -34
- package/.claude/skills/workflow-commands/followup.md +57 -76
- package/.claude/skills/workflow-commands/issue-comments.md +43 -60
- package/.claude/skills/workflow-commands/kickoff.md +65 -74
- package/.claude/skills/workflow-commands/observation-filing.md +62 -107
- package/.claude/skills/workflow-commands/observation-ledger.md +56 -111
- package/.claude/skills/workflow-commands/pre-gate-cut.md +89 -138
- package/.claude/skills/workflow-commands/prerequisite.md +10 -15
- package/.claude/skills/workflow-commands/progress-watcher.md +21 -26
- package/.claude/skills/workflow-commands/retrospective.md +31 -50
- package/.claude/skills/workflow-commands/split-assessment.md +34 -58
- package/.claude/skills/workflow-commands/working-tree-hold.md +54 -71
- package/CLAUDE.md +6 -5
- package/dist/CLAUDE.md +6 -5
- package/dist/hooks/batch-guard.js +6 -6
- package/dist/hooks/{chunk-7WQBPLUN.js → chunk-43ZHT22P.js} +31 -15
- package/dist/hooks/{chunk-LIAFCXL7.js → chunk-AS74OU3D.js} +23 -7
- package/dist/hooks/{chunk-3C4XRYG6.js → chunk-E7OIKX5Z.js} +17 -12
- package/dist/hooks/{chunk-Z4XI7CZS.js → chunk-EUMACUK2.js} +18 -12
- package/dist/hooks/{chunk-WNLVGT7E.js → chunk-H5HVWYXK.js} +4 -4
- package/dist/hooks/{chunk-HHI6FO3R.js → chunk-IIGFYXKC.js} +345 -240
- package/dist/hooks/{chunk-GPLGZ6IC.js → chunk-J47HU5H5.js} +14 -3
- package/dist/hooks/{chunk-OLMO72ON.js → chunk-K4EOONYM.js} +1 -1
- package/dist/hooks/{chunk-D5QBTOCZ.js → chunk-K4LMBQC2.js} +4 -4
- package/dist/hooks/{chunk-TBJFTSUY.js → chunk-KC5AK2GF.js} +8 -6
- package/dist/hooks/chunk-SHGPANFB.js +56 -0
- package/dist/hooks/{chunk-5H4SSDSD.js → chunk-YHBZAJSV.js} +3 -3
- package/dist/hooks/{chunk-HFGWYGUV.js → chunk-YYPI7SJZ.js} +5 -5
- package/dist/hooks/codex-hook-adapter.js +13 -13
- package/dist/hooks/duplicate-read-guard.js +7 -7
- package/dist/hooks/format-edited.js +3 -3
- package/dist/hooks/inputs.json +216 -214
- package/dist/hooks/investigation-guard.js +7 -7
- package/dist/hooks/pretool-guard.js +12 -12
- package/dist/hooks/session-lang.js +6 -5
- package/dist/hooks/stop-guard.js +18 -14
- package/dist/josh.js +5 -6
- 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/package.json +3 -3
- package/prompts/coding-standards.md +12 -22
- package/prompts/collaboration-workflow/file-edits.md +26 -44
- package/prompts/collaboration-workflow/gh-rest.md +20 -36
- package/prompts/collaboration-workflow/glossary.md +5 -7
- package/prompts/collaboration-workflow/issue-citation.md +7 -13
- package/prompts/collaboration-workflow/issue-template.md +29 -29
- package/prompts/collaboration-workflow/operating-rules.md +35 -44
- 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 +50 -53
- package/prompts/collaboration-workflow/proposal-request.md +1 -9
- package/prompts/collaboration-workflow/report-format.md +32 -49
- package/prompts/collaboration-workflow/residency.md +10 -10
- package/prompts/collaboration-workflow/rule-delivery.md +9 -9
- 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 +24 -30
- package/prompts/collaboration-workflow.md +24 -25
- package/prompts/refactoring.md +33 -43
- package/prompts/review-rubric.md +84 -129
- package/prompts/review.md +111 -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-exit-record.ts +23 -1
- package/scripts/agent/codex-agent-argv.ts +7 -2
- package/scripts/backlog/backlog-budget-cli.ts +1 -2
- 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 +2 -4
- package/scripts/backlog/backlog-drive-restore.ts +19 -1
- package/scripts/backlog/backlog-drive-seats.ts +27 -0
- package/scripts/backlog/backlog-drive.ts +11 -6
- package/scripts/backlog/backlog-ready.ts +13 -6
- 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/investigation-guard.ts +1 -1
- package/scripts/delegation/investigation-reads.ts +1 -1
- 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 +27 -27
- package/scripts/document/document-byte-check.ts +1 -2
- package/scripts/document/entry-read-budget.ts +2 -2
- package/scripts/epic/epic-audit-rationale.ts +8 -2
- package/scripts/epic/epic-bundle-cli.ts +1 -2
- package/scripts/epic/epic-chains.ts +6 -2
- package/scripts/epic/epic-close-comment.ts +1 -2
- package/scripts/gate/verification-gate.ts +7 -2
- package/scripts/gh/git-pr.ts +6 -2
- 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/hooks/format-edited-file.ts +10 -4
- package/scripts/hooks/pre-push-unit.ts +15 -4
- package/scripts/hooks/pretool-guard.ts +23 -29
- package/scripts/hooks/step-zero-notice.ts +3 -2
- package/scripts/init/hook-command-rewrite.ts +6 -2
- package/scripts/init/init-logic-deploy-vps.ts +4 -2
- package/scripts/issue/behavior-change-lint.ts +12 -6
- package/scripts/issue/issue-scout-cli.ts +3 -2
- package/scripts/josh/file-map-stamp.ts +1 -3
- package/scripts/josh/hook-decision.ts +17 -2
- package/scripts/lane/lane-await.ts +3 -2
- package/scripts/lane/lane-child-invocation.ts +14 -1
- package/scripts/lane/lane-guard-policy.ts +4 -4
- package/scripts/lane/lane-ledger.ts +9 -0
- package/scripts/lane/lane-load.ts +9 -2
- package/scripts/lane/lane-measure-cli.ts +2 -0
- package/scripts/lane/lane-parked.ts +18 -0
- package/scripts/lane/lane-process-load.ts +125 -0
- package/scripts/lane/lane-process-stats.ts +93 -0
- package/scripts/lane/lane-registry.ts +8 -3
- package/scripts/lane/lane-session-broker.ts +29 -5
- package/scripts/lane/lane-spent.ts +14 -3
- package/scripts/lane/lane-stats.ts +1 -0
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- 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-lint.ts +7 -4
- package/scripts/review/review-record-cli.ts +6 -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 +3 -6
- package/scripts/rules/git-force.ts +5 -9
- package/scripts/rules/implementation-cut.ts +37 -35
- package/scripts/rules/index-guard.ts +4 -7
- package/scripts/rules/issue-comments.ts +5 -15
- 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/oracle-consulted.ts +4 -5
- package/scripts/rules/piped-verification.ts +81 -31
- 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/run-tail-rule.ts +6 -22
- package/scripts/rules/shell-body-trigger.ts +4 -6
- package/scripts/rules/shell-segments.ts +7 -0
- package/scripts/rules/stop-rules.ts +16 -29
- 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-github.ts +11 -3
- package/scripts/run/board/run-board-idle.ts +31 -0
- package/scripts/run/board/run-board-read.ts +9 -12
- package/scripts/run/board/run-board-reason.ts +7 -3
- package/scripts/run/board/run-board-state.ts +4 -0
- package/scripts/run/board/run-board-status.ts +18 -3
- package/scripts/run/board/run-board-thanks.ts +7 -2
- package/scripts/run/board/run-board-tick.ts +32 -7
- 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 +15 -20
- 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 +13 -0
- package/scripts/run/cut/run-cut.ts +10 -1
- package/scripts/run/hold/run-hold-cli.ts +14 -3
- package/scripts/run/hold/run-hold.ts +6 -3
- package/scripts/run/merge/run-merge-cli.ts +30 -7
- package/scripts/run/merge/run-merge-ship.ts +59 -1
- package/scripts/run/merge/run-merge.ts +3 -2
- package/scripts/run/run-ending.ts +31 -3
- package/scripts/run/run-parent-cut-hook.ts +5 -10
- package/scripts/run/run-preflight.ts +1 -2
- package/scripts/run/run-stop-notify.ts +1 -2
- package/scripts/run/run-watcher-guard.ts +6 -3
- package/scripts/run/ship/run-ship-review-steps.ts +13 -4
- package/scripts/run/ship/run-ship-review.ts +15 -2
- 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/unit-worker-share.ts +3 -2
- 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 +10 -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/dist/hooks/chunk-UT7YC3N2.js +0 -56
|
@@ -2,33 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## セッション向け出力で Issue はリンク+セッション言語の短い要約で参照する(joshuafolkken/kit#1758)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
理由は `docs/maintainers/issue-citation-rationale.md` → "Why the rule exists"、発火点の常駐理由は `docs/maintainers/issue-citation-rationale.md` → "Why the trigger is resident in CLAUDE.md"。
|
|
6
6
|
|
|
7
|
-
**規則**: セッション向け出力で Issue を指すときは、次の 2
|
|
7
|
+
**規則**: セッション向け出力で Issue を指すときは、次の 2 つを必ず添える(対応前の「これから走らせる」「待機中」「対象外」の言及も含む)。
|
|
8
8
|
|
|
9
9
|
1. 番号にチケットへの markdown リンク
|
|
10
|
-
2. セッション言語(`JOSH_SESSION_LANG`、既定 `ja
|
|
11
|
-
|
|
12
|
-
書き方の例:
|
|
10
|
+
2. セッション言語(`JOSH_SESSION_LANG`、既定 `ja`)の短い要約タイトル(全訳でなくてよい)
|
|
13
11
|
|
|
14
12
|
- `[#<N>](https://github.com/<owner>/<repo>/issues/<N>) — <その Issue が何をするものかの短い要約>`
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
**要約タイトルは全訳ではなく要約でよい。** 何をするものか分かれば足りる。長い訳を作ることが目的ではない。`issue:cite` が出すタイトルを、必要ならセッション言語に言い換えて使う。
|
|
19
|
-
|
|
20
|
-
**対応前の言及も対象である。** 「これから走らせる」「待機中」「対象外」を並べる場面も含む。
|
|
14
|
+
**この引用行は `pnpm josh issue:cite <N> [<N> ...]` が出す。** 複数 Issue は 1 呼び出しにまとめ、他リポジトリは `--repo <owner/repo>` か `owner/repo#N` 表記(`docs/maintainers/issue-citation-rationale.md` → "Why issue:cite prints the line"、詳細は [docs/josh-commands.md](https://github.com/joshuafolkken/kit/blob/main/docs/josh-commands.md) の `josh issue:cite`)。タイトルは必要ならセッション言語に言い換える。素の `#N` の行(コミットメッセージ・PR 本文・イベント行・Telegram 本文)を写すときは引用形に直す(`docs/maintainers/issue-citation-rationale.md` → "Why josh prints the citation form itself")。
|
|
21
15
|
|
|
22
16
|
### 適用範囲
|
|
23
17
|
|
|
24
18
|
**対象** — セッション向け出力。会話の説明、計画の提示、進捗報告、完了報告、`AskUserQuestion` の選択肢。
|
|
25
19
|
|
|
26
|
-
**対象外** —
|
|
20
|
+
**対象外** — Issue 本文、Issue / PR コメント。
|
|
27
21
|
|
|
28
22
|
### 英語固定の 3 つとは衝突しない
|
|
29
23
|
|
|
30
|
-
|
|
24
|
+
要約はタイトルではなくセッション内の散文なので、`overview.md` →「出力の言語(`JOSH_SESSION_LANG`)」の英語固定とは矛盾しない。
|
|
31
25
|
|
|
32
26
|
### 停止時の担保(joshuafolkken/kit#2247)
|
|
33
27
|
|
|
34
|
-
`Stop` フック `pnpm josh stop:guard`
|
|
28
|
+
`Stop` フック `pnpm josh stop:guard` は返信の地の文に裸の `#N` があると停止をブロックし、`pnpm josh issue:cite <N...>` の実行形を差し戻す。差し戻されたらその実行形で引用し直す(`docs/maintainers/issue-citation-rationale.md` → "How the Stop hook delivers it"、検出が外す範囲は [docs/josh-commands.md](https://github.com/joshuafolkken/kit/blob/main/docs/josh-commands.md) の `josh stop:guard`)。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Step 1: Issue 作成テンプレ
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
タイトルは簡潔で明瞭な英語にする(「出力の言語(`JOSH_SESSION_LANG`)」の例外)。日本語や改善できるタイトルは実装開始前に `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"` で書き換える。本文は次のテンプレートの節をすべて含める:
|
|
4
4
|
|
|
5
5
|
````md
|
|
6
6
|
## 背景
|
|
@@ -50,45 +50,45 @@
|
|
|
50
50
|
|
|
51
51
|
### `## 背景` 直下の宣言と分類ラベル
|
|
52
52
|
|
|
53
|
-
起票は `pnpm josh issue:file "<title>" --body-file <本文ファイル> --depth <n>`
|
|
53
|
+
起票は `pnpm josh issue:file "<title>" --body-file <本文ファイル> --depth <n>` で行い、本文の検査(`pnpm josh issue:lint <path>` と同じ)と下表のラベル付与はコマンドが行う。**宣言は起票者が選ぶ。** `- 人の判断:` の行は必須で、`issue:file` が検査し `auto-ok` の判定に使う(`scripts/issue/issue-auto-ok.ts`、`docs/how-to/run-backlog.md`)。`不要` を宣言する起票には `--label run:lane`(kit 自身の検証の不具合なら `run:solo`)も付ける — 無ければ `issue:file` が拒否する。
|
|
54
54
|
|
|
55
|
-
| 宣言 | 付くラベル | 選ぶ基準
|
|
56
|
-
| ---------------------- | --------------------------------- |
|
|
57
|
-
| `- 種別: 不具合` | `bug` |
|
|
58
|
-
| `- 目的: 機能追加` | `enhancement` |
|
|
59
|
-
| `- 目的: 機能改善` | `enhancement` |
|
|
60
|
-
| `- 互換性: 破壊的変更` | `breaking-change` |
|
|
61
|
-
| `- 種別: 振る舞い変更` | なし | AI
|
|
62
|
-
| `- 人の判断: 不要` | `auto-ok
|
|
55
|
+
| 宣言 | 付くラベル | 選ぶ基準 |
|
|
56
|
+
| ---------------------- | --------------------------------- | ---------------------------------------------------------- |
|
|
57
|
+
| `- 種別: 不具合` | `bug` | 報告された症状を直す(無ければ `- 種別: 非不具合`) |
|
|
58
|
+
| `- 目的: 機能追加` | `enhancement` | 新しい機能。修正・文書・依存更新・保守には書かない |
|
|
59
|
+
| `- 目的: 機能改善` | `enhancement` | 既存機能の改善。目的が曖昧なら受け入れ条件を具体化してから |
|
|
60
|
+
| `- 互換性: 破壊的変更` | `breaking-change` | 契約を変える。移行措置があっても書き、廃止対象と影響を書く |
|
|
61
|
+
| `- 種別: 振る舞い変更` | なし | AI の振る舞いを変える。下の 3 見出しが必須 |
|
|
62
|
+
| `- 人の判断: 不要` | `auto-ok`(除外ラベルが無ければ) | 方針の判断・外部アカウント・目視確認のどれも要らない |
|
|
63
63
|
|
|
64
|
-
- **持ち主の意図と違う動きは、コード・コメント・テストに書かれた設計どおりでも `- 種別: 不具合` とする。**
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
64
|
+
- **持ち主の意図と違う動きは、コード・コメント・テストに書かれた設計どおりでも `- 種別: 不具合` とする。** 例: コメントとテストに固定されたまま意図より広く働く自動付与、文書だけでも意図と違う分類を生む基準
|
|
65
|
+
- `- 種別: 不具合` の回帰テストは、利用者が症状を見たのと同じ粒度で書く。修正前のツリーでも緑になるテストは `pnpm josh git -y` が拒否する(joshuafolkken/kit#2448)
|
|
66
|
+
- `bugfix`(PR のリリース分類)を Issue の `bug` の代わりにしない。`enhancement` と `breaking-change` の両方を持つ Issue の PR は `breaking-change` にする
|
|
67
|
+
- `## 発火点` の名前は `prompts/collaboration-workflow/rule-delivery.md` の配送表と突き合わされる
|
|
68
|
+
- `## ベースライン` の測定コマンドは、マージ後に `pnpm josh measure:rerun <N>` が再実行して before / after を印字する(作者が `OWNER` / `MEMBER` / `COLLABORATOR` の Issue に限る)
|
|
69
|
+
- 公開しないと利用側が使えない変更には `--release` を付ける(既存 Issue は `pnpm josh issue:release <N>`、`docs/josh-commands-backlog.md` → `josh issue:release`)
|
|
70
70
|
|
|
71
71
|
### 起票元へのバックリンク(`## Origin` / `## Upstream issues`)
|
|
72
72
|
|
|
73
|
-
**別リポジトリのセッションから起票した Issue には、起票元へのリンクを双方向で必ず書く。**
|
|
73
|
+
**別リポジトリのセッションから起票した Issue には、起票元へのリンクを双方向で必ず書く。**
|
|
74
74
|
|
|
75
|
-
| 方向
|
|
76
|
-
|
|
|
77
|
-
| 上流
|
|
78
|
-
| 起票元
|
|
79
|
-
| 起票元
|
|
75
|
+
| 方向 | 置き場所 | 固定見出し | 内容 |
|
|
76
|
+
| --------------- | ---------------------- | ----------------------- | -------------------------- |
|
|
77
|
+
| 上流 → 起票元 | 上流 Issue の本文 | `## Origin` | 起票元 Issue |
|
|
78
|
+
| 起票元 → 上流 | 起票元の本文かコメント | `## Upstream issues` | 起票した上流 Issue 全件 |
|
|
79
|
+
| 起票元 → 未起票 | 起票元の本文かコメント | `## Upstream candidate` | 第三者への報告候補と下書き |
|
|
80
80
|
|
|
81
|
-
-
|
|
82
|
-
- **リンクは必ずリポジトリ修飾する**(`owner/repo#N` または完全 URL
|
|
83
|
-
-
|
|
84
|
-
-
|
|
81
|
+
- 見出しは固定する。起票元の本文が確定済みなら、同じ見出しでコメントに書く
|
|
82
|
+
- **リンクは必ずリポジトリ修飾する**(`owner/repo#N` または完全 URL)
|
|
83
|
+
- チェックボックス行(`- [ ] owner/repo#N`)で書かず、散文か素の箇条書き(`- owner/repo#N`)にする(epic の自動クローズを止めるため)
|
|
84
|
+
- third-party への報告はユーザーの明示指示まで起票しない(→「第三者リポジトリへの書き込みは Tier C(明示指示が必要)」)
|
|
85
85
|
- 割り込みで起票する手順は `upstream-interrupt.md`
|
|
86
86
|
|
|
87
87
|
### 複数 Issue に分割するときの epic Issue
|
|
88
88
|
|
|
89
|
-
**1 つの要望を 2 件以上の Issue に分割したら、件数や順序の有無にかかわらず常に epic を作る。**
|
|
89
|
+
**1 つの要望を 2 件以上の Issue に分割したら、件数や順序の有無にかかわらず常に epic を作る。** 作成は `pnpm josh epic`、点検は `pnpm josh epic:check <E>`、子の追加は `pnpm josh epic --add` で行い、本文を手で編集しない。epic 自体を実装ランに渡さない(`backlogrun #<E> --only` が子を回す)。記法は `epic-commands` スキル →「Creating an epic」。
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
`josh` が使えない環境での手作業手順:
|
|
92
92
|
|
|
93
93
|
1. 子 Issue をすべて起票し、番号を控える。
|
|
94
94
|
2. ラベルを用意する: `gh api repos/{owner}/{repo}/labels -f name=epic -f color=5319e7 -f description="Tracks a batch of child issues from one split" --silent 2>/dev/null || true`
|
|
@@ -115,4 +115,4 @@
|
|
|
115
115
|
|
|
116
116
|
4. 順序があるときだけ、別ステップで依存を足す(Issue 番号ではなく database id を渡す): `gh api repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F issue_id="$(gh api repos/{owner}/{repo}/issues/<N1> --jq .id)"`
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
各手順の理由は kit の `docs/maintainers/epic-commands-rationale.md` →「Creating an epic by hand」。
|
|
@@ -1,72 +1,63 @@
|
|
|
1
1
|
## 運用ルール
|
|
2
2
|
|
|
3
3
|
- 通知は CI チェック成功後に投稿する
|
|
4
|
-
-
|
|
5
|
-
-
|
|
4
|
+
- 通知投稿に失敗しても、実装完了の事実をログで確認できるようにする
|
|
5
|
+
- 自動投稿する Issue コメントは `JOSH_SESSION_LANG` の言語(未設定なら `ja`)で書く。Issue タイトルだけは英語
|
|
6
6
|
|
|
7
7
|
### CI チェック失敗時の対応
|
|
8
8
|
|
|
9
|
-
`pnpm josh followup` は Required
|
|
9
|
+
`pnpm josh followup` は Required チェックだけを待つが、Workers Builds(Cloudflare デプロイ)など**非 Required チェックの失敗もユーザーに報告する**。
|
|
10
10
|
|
|
11
|
-
- `pnpm josh followup`
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- ユーザーへの報告も失敗の事実を正直に伝える(「成功」として扱わない)
|
|
11
|
+
- `pnpm josh followup` が印字するチェック一覧から失敗をすべて列挙する。手で読み直すときは `gh api repos/{owner}/{repo}/commits/<head-sha>/check-runs --jq '.check_runs[] | {name, conclusion}'`(`gh pr checks` は GraphQL を通るためクラウドセッションで 403)
|
|
12
|
+
- 修正できたら修正内容を、できなかったら失敗チェック名・原因・未解決である旨を `--notify-message` に書く。**完了コメントに失敗を隠してはならない**
|
|
13
|
+
- ユーザーへの報告でも失敗を「成功」として扱わない
|
|
15
14
|
|
|
16
15
|
### ほかの単一ソースにある規則
|
|
17
16
|
|
|
18
|
-
auto-merge と `completion` 通知・明示的な起動・`confirmation` 通知・作業ツリーの保持・overrides
|
|
17
|
+
auto-merge と `completion` 通知・明示的な起動・`confirmation` 通知・作業ツリーの保持・overrides の保護の置き場は `docs/maintainers/operating-rules-rationale.md` → "Rules that moved to their single source"。
|
|
19
18
|
|
|
20
19
|
### 指示されていない行動は取らない
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
`CLAUDE.md` → "Git Rules" の細則。対象には共有ブランチへの push・外部通知の追加送信・リポジトリ設定の変更も含む。
|
|
23
22
|
|
|
24
23
|
- auto-merge の本文は [`followup.md`](../../.claude/skills/workflow-commands/followup.md)、`backlogrun` の子への継承は [`backlogrun-child.md`](../../.claude/skills/workflow-commands/backlogrun-child.md)
|
|
25
24
|
- `kickoff` / `pnpm josh followup` 単独実行は文書化されたスコープで終了する。PR が OPEN のまま完了したら状態を報告して停止する
|
|
26
|
-
- 「チェックが全部 green
|
|
27
|
-
- **deny と配送ガードは実装であって規則ではない。** `gh pr merge`・force push
|
|
28
|
-
-
|
|
29
|
-
- ただしこの「迷ったら確認」は Tier C に限る。**可逆な実装・設計判断(Tier A)は別ルール**(下記「意思決定の自律ポリシー」)に従う
|
|
25
|
+
- 「チェックが全部 green」は次へ進む承認ではない
|
|
26
|
+
- **deny と配送ガードは実装であって規則ではない。** `gh pr merge`・force push・ブランチ削除は `.claude/settings.json` の `permissions.deny` と `pnpm josh rule:guard` が拒否する(一覧は [`rule-delivery.md`](./rule-delivery.md) →「配送されている規則」)が、規則より狭い。ツールが通したことを許可と読まない。`fullrun` の auto-merge は `pnpm josh followup` の内部から gh を起動するため影響を受けない
|
|
27
|
+
- 共有状態に影響する操作(Tier C)は、迷ったら確認する。可逆な実装・設計判断(Tier A)は下記 "decision-autonomy" に従う
|
|
30
28
|
|
|
31
29
|
### no-self-staging — git index を勝手に変更しない(自律 staging の禁止)
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- **調査目的の staging
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- 上記以外で staging が必要だと考えたときは、**実行せずに先に確認する**
|
|
44
|
-
- **レーンの中で競合を解決したあとの「解決済み」の記録は、ケース 2 に含まれる(Tier A)。** レーンは run 専用の作業ツリーで、守るべき利用者の staging はない。利用者に `git add` の許可を求めず、`pnpm josh git -y` で記録する。手順は `.claude/skills/workflow-commands/chain-rule.md` →「origin/main is merged in before the gate」の 1 か所にだけ書く(joshuafolkken/kit#2445)
|
|
45
|
-
- 同じ理由で、`git reset` / `git checkout -- <path>` / `git restore <path>` など index や作業ツリーを破壊的に書き換える操作も、自分の判断で実行しない
|
|
46
|
-
- **`git stash` は例外的に、次の明文化されたフローの中でのみ自動実行してよい**:
|
|
47
|
-
1. `fullrun new` / `halfrun new` の手順 5(作業ツリーに変更がある状態で `josh latest` を回す前の退避)
|
|
31
|
+
`CLAUDE.md` → "Git Rules" の細則。index には履歴がなく、上書きされたステージ状態は復元できない(`docs/maintainers/operating-rules-rationale.md` → "Why the index is the user's")。
|
|
32
|
+
|
|
33
|
+
- **調査目的の staging はしない。** 読み取り専用コマンドを使う: `git status --short`、`git diff` / `git diff --stat` / `git diff HEAD`、`git diff --staged`、未追跡ファイルは `git diff --no-index /dev/null <new-file>` か直接読む
|
|
34
|
+
- staging してよいのは次の 2 ケースだけ。それ以外は実行せずに確認する:
|
|
35
|
+
1. ユーザーがそのターンで明示的にステージを指示した
|
|
36
|
+
2. 承認済みのコミットフロー(`pnpm josh git`、`fullrun` / `backlogrun` のコミット手順。`halfrun` は含まない)
|
|
37
|
+
- レーンの中で競合を解決したあとの記録はケース 2(Tier A)。許可を求めず `pnpm josh git -y` で記録する。手順は `.claude/skills/workflow-commands/chain-rule.md` →「origin/main is merged in before the gate」(joshuafolkken/kit#2445)
|
|
38
|
+
- `git reset` / `git checkout -- <path>` / `git restore <path>` など index や作業ツリーを破壊的に書き換える操作も、自分の判断で実行しない
|
|
39
|
+
- **`git stash` を自動実行してよいのは次のフローだけ**。ほかの場面では実行せずに確認する:
|
|
40
|
+
1. `fullrun new` / `halfrun new` の手順 5(`josh latest` 前の退避)
|
|
48
41
|
2. `backlogrun` のラン開始時の `josh latest`
|
|
49
42
|
3. 「別パッケージ起因の問題は割り込み Issue で対応する」
|
|
50
43
|
4. `backlogrun` が epic の子を始める前の preflight(`pnpm josh run:hold <N>` が `reclaim` と答えたときの回収 — joshuafolkken/kit#926, joshuafolkken/kit#1965)
|
|
51
44
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- **会話で作った実装をランへ渡す「引き渡し用の stash」も `pnpm josh stash:pop "<メッセージ>"` で復元する。当てたあと stash は消える**(経緯は `docs/maintainers/operating-rules-rationale.md` → "Why a handed-over stash is popped")
|
|
55
|
-
- **計画には復元手順としてこの 1 行だけを書く。** `git stash apply` / `git stash pop` も「drop しない」という条件も書かない
|
|
56
|
-
- **計画がガードの拒否する復元形を指していたら、実行側は `stash:pop` に読み替えて続行し、Issue コメントに残す(Tier A)。** `needs-decision` では止まらない
|
|
57
|
-
- **stash を残すのは持ち主の判断だけである。** 持ち主が計画に理由を書き、ランはそこで止まって確認する
|
|
45
|
+
1〜3 は直後に `pnpm josh stash:pop "<メッセージ>"` で復元する。stash は全 work tree が共有する 1 本のスタックなので、位置指定や引数なしの `git stash pop` は使わない(joshuafolkken/kit#2050)。4 は復元しない — 代わりに stash を子の Issue にコメントで記録する(`prerequisite.md` の stash と同じく、記録だけが後で pop させる手がかり)
|
|
58
46
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
47
|
+
- **会話で作った実装をランへ渡す「引き渡し用の stash」も `pnpm josh stash:pop "<メッセージ>"` で復元する。当てたあと stash は消える**(`docs/maintainers/operating-rules-rationale.md` → "Why a handed-over stash is popped")
|
|
48
|
+
- 計画には復元手順としてこの 1 行だけを書く。`git stash apply` / `git stash pop` も「drop しない」という条件も書かない
|
|
49
|
+
- 計画がガードの拒否する復元形を指していたら、実行側は `stash:pop` に読み替えて続行し、Issue コメントに残す(Tier A)。`needs-decision` では止まらない
|
|
50
|
+
- stash を残すのは持ち主の判断だけ。持ち主が計画に理由を書き、ランはそこで止まって確認する
|
|
51
|
+
- staging・index の書き換え・`git commit` の直接実行は deny されており、deny には「そのターンでユーザーが明示指示した」という例外がない。ケース 1 はユーザー自身の端末で実行してもらう。コミットを指示されたら `pnpm josh git` を通す
|
|
52
|
+
- index を守る deny と `pnpm josh rule:guard`(`worktree-mutation`・`index-mutation`・`destructive-command`・`protected-file` 行)も実装である(→「deny と配送ガードは実装であって規則ではない」)
|
|
61
53
|
|
|
62
54
|
### decision-autonomy — 意思決定の自律ポリシー(確認停止を減らす)
|
|
63
55
|
|
|
64
|
-
|
|
56
|
+
`CLAUDE.md` → "Decision autonomy" の境界の細則。
|
|
65
57
|
|
|
66
|
-
- **A と B
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
- **Tier C
|
|
71
|
-
-
|
|
72
|
-
- **自動判断の記録の書き方**: Issue 駆動ワークフロー内では `pnpm josh issue:comment <N> --body-file <path>` で、採用案・不採用の代替案・なぜ採用案が明確に優位かを記載する
|
|
58
|
+
- **A と B の判定**: 確認するのは「差が僅差 かつ 後戻りしにくい/アーキテクチャに長く影響する」ときだけ。明確に優位な選択肢は自動で選び、僅差でも安価に巻き戻せる選択は決めて記録して進む
|
|
59
|
+
- 起票した Issue の所属先は、候補が複数の epic に散っていても Tier B ではない(joshuafolkken/kit#1339)。1 つを選び、採用・却下・理由・決定日を Issue と epic の両方に記録する。止まるのは 2 つが本当に甲乙つけがたいときだけ
|
|
60
|
+
- 自己修正(自分が公開した成果物の事実誤りの訂正、同じセッションで自分が特定した自分の作業の抜けの穴埋め)は Tier A。承認済みの作業の完了・修復に限り、目標の表明や問いで動いてよい意味ではない(→ `principles.md` → "consult-vs-execute")
|
|
61
|
+
- **Tier C との境界**: マージ・ブランチ削除・force push・スコープ外の変更は、自分が招いた問題でも Tier C。確認を外しても監査証跡は外さない
|
|
62
|
+
- **major のバージョン bump は Tier C**: `pnpm josh bump major` は自分の判断で実行も提案もしない。既定は minor / patch で、major はユーザーがそのターンで明示したときだけ(0.x の major は 1.0.0 になり戻せない)。`josh bump` が版を変えたら、変わった挙動の `docs/` をコミット前に更新する
|
|
63
|
+
- 自動判断の記録: Issue 駆動ワークフロー内では `pnpm josh issue:comment <N> --body-file <path>` で、採用案・不採用の代替案・採用案が優位な理由を書く
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# コマンド出力が文脈へ持ち込む量の上限(joshuafolkken/kit#1173)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
配布される `.claude/settings.json` の `env` ブロックが `BASH_MAX_OUTPUT_LENGTH` を宣言し、Bash ツールの出力がこの文字数を超えると真ん中が省略される。
|
|
4
4
|
|
|
5
5
|
```json
|
|
6
6
|
"env": {
|
|
@@ -8,34 +8,34 @@
|
|
|
8
8
|
}
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
**8,000 文字**(harness の既定は 30,000
|
|
11
|
+
**8,000 文字**(harness の既定は 30,000、最大は 150,000。根拠は `docs/maintainers/output-bounds-rationale.md` → "Why 8,000")。効くのは Bash ツールだけで、`Read` と `Agent` の結果には効かない。
|
|
12
12
|
|
|
13
13
|
## 切り詰められたときにどうするか
|
|
14
14
|
|
|
15
|
-
**情報を落とすのではなく、必要な範囲に合わせて読み直す。**
|
|
15
|
+
**情報を落とすのではなく、必要な範囲に合わせて読み直す。** 再実行ではなく絞り込む:
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
17
|
+
- ファイルは範囲を指定する(`sed -n '120,180p' <file>`、または `Read` の `offset` / `limit`)
|
|
18
|
+
- 一覧は件数を絞る(`--limit`、`| head -30`)、JSON は必要な項目だけ取り出す(`gh api … --jq '…'`)
|
|
19
|
+
- 全量が要るときは、ファイルへ落として(`> <file>`)から範囲を読む
|
|
20
20
|
|
|
21
21
|
## 切り詰められた出力を、完全な出力として読まない
|
|
22
22
|
|
|
23
|
-
**検証ゲートと差分は、切り詰められた結果で判断しない。**
|
|
23
|
+
**検証ゲートと差分は、切り詰められた結果で判断しない。**
|
|
24
24
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
25
|
+
- `pnpm josh gate` は合否の 1 行を末尾に出す。失敗の内訳が切れたら、合否行の直前の `full output: <path>` のファイルを読む(joshuafolkken/kit#1227)
|
|
26
|
+
- 差分には判定行が無い。差分はファイルへ落としてから範囲で読む(`git diff main...HEAD > /tmp/diff.patch && wc -l /tmp/diff.patch`)
|
|
27
27
|
|
|
28
28
|
## 検証コマンドをパイプに繋がない(joshuafolkken/kit#1556)
|
|
29
29
|
|
|
30
|
-
**パイプラインの終了コードは最後のコマンドのものである。** `pnpm josh gate 2>&1 | tail -40`
|
|
30
|
+
**パイプラインの終了コードは最後のコマンドのものである。** `pnpm josh gate 2>&1 | tail -40` は赤いゲートを成功として返す。**これは `josh gate` の欠陥ではない。** 直すのは呼び出し方である。
|
|
31
31
|
|
|
32
|
-
- **既定はパイプなしで実行する。**
|
|
33
|
-
- 絞るなら、ファイルへ落として範囲で読む(`pnpm josh gate > /tmp/gate.log 2>&1; tail -40 /tmp/gate.log
|
|
32
|
+
- **既定はパイプなしで実行する。** 判定行は末尾に出るので、省略されても残る
|
|
33
|
+
- 絞るなら、ファイルへ落として範囲で読む(`pnpm josh gate > /tmp/gate.log 2>&1; tail -40 /tmp/gate.log`)
|
|
34
34
|
- パイプが避けられないなら `set -o pipefail` を前置する
|
|
35
|
-
-
|
|
35
|
+
- どの形でも、印字された判定行を読む。終了コードだけを答えにしない
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
対象は結果が合否を意味するコマンドだけ — `gate` / `check` / `lint*` / `cspell*` / `test*` / `eval`。**`git log | head` や `gh issue list | head` は対象外であり、意図的にそうしている。** `latest:scope` / `review:brief` も、判定ではなく答えを印字するので `$(...)` で受けてよい。`pnpm josh pretool:guard` は、後段が `tail` /全行読みの `grep` だけの検証パイプラインを `(set -o pipefail; …)` で包み、他のパイプは拒否する(`rule-delivery.md`、`docs/maintainers/output-bounds-rationale.md` → "Why the pipe rule is delivered by a trigger")。
|
|
38
38
|
|
|
39
39
|
## 検査
|
|
40
40
|
|
|
41
|
-
`scripts/lib/bash-output-cap.test.ts`
|
|
41
|
+
`scripts/lib/bash-output-cap.test.ts` が、配布設定の上限がこの文書の値と一致し、既定より小さく最大を超えないことを固定する(`docs/maintainers/output-bounds-rationale.md` → "What the tests pin")。
|
|
@@ -8,34 +8,29 @@
|
|
|
8
8
|
|
|
9
9
|
### フェーズ分離
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- Planning phase(`kickoff`): Step 1〜3 — Issue 作成・計画投稿・Telegram 通知で止まる。実装前にレビューや承認を挟むときに使う。
|
|
12
|
+
- Execution phase(`fullrun #N`): Step 4〜5 — 既存 Issue の計画に基づいて実装・PR 作成・完了通知を行う。
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
- **Execution phase(`fullrun #N`)**: Step 4〜5 — 既存 Issue の計画に基づいて実装・PR 作成・完了通知を行う。
|
|
15
|
-
|
|
16
|
-
一括実行する場合は `fullrun new` で Step 1〜5 を通しで実行する。
|
|
14
|
+
`fullrun new` は Step 1〜5 を通しで実行する。
|
|
17
15
|
|
|
18
16
|
### 出力の言語(`JOSH_SESSION_LANG`)
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
開発者との対話と成果物の散文は、環境変数 `JOSH_SESSION_LANG`(例: `ja` / `en`)の言語で書く。**未設定・空・`.env` なしのときは `ja`**。
|
|
21
19
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
20
|
+
- 対話: セッション中の説明・質問、`AskUserQuestion` の選択肢ラベル・説明
|
|
21
|
+
- 成果物の散文: Issue 本文、Issue/PR コメント(Step 3 の計画コメント、`pnpm josh followup` の完了コメントを含む)、Telegram 通知の本文(`--body` / `--notify-message`)
|
|
24
22
|
- **設定に関わらず英語で固定するもの**(3 つ):
|
|
25
|
-
1.
|
|
26
|
-
2.
|
|
27
|
-
3.
|
|
23
|
+
1. Issue/PR タイトル(Step 1 のタイトル正規化ルール)
|
|
24
|
+
2. コード内コメント、テストタイトル(`describe` / `it` / `expect`)、コミットメッセージ
|
|
25
|
+
3. スクリプトが出力する固定文字列: Telegram のヘッダーラベル(`Planning` / `Completion` など)、`Issue:` / `PR:` の URL ラベル、`--notify-message` 省略時の既定メッセージ
|
|
28
26
|
|
|
29
|
-
`JOSH_SESSION_LANG`
|
|
27
|
+
`JOSH_SESSION_LANG` は開発者個人の設定で、`.env`(gitignore 済み)に置く。設定値は毎ターン `UserPromptSubmit` フック(`scripts/hooks/run-hook.sh session-lang`、Codex は `.codex/hooks.json`)が差し込み、未設定なら出さない。フックが走らないハーネス(Gemini / Cursor)は `.env` を読む。既定の理由は `docs/maintainers/overview-rationale.md` → "Why the session language defaults the way it does"。
|
|
30
28
|
|
|
31
29
|
### 配布ドキュメントの層ごとの言語(joshuafolkken/kit#2997)
|
|
32
30
|
|
|
33
|
-
ドキュメントは**層ごとに 1
|
|
31
|
+
ドキュメントは**層ごとに 1 つの言語**で書き、層の中で言語を混ぜない(`JOSH_SESSION_LANG` に依らない)。
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
| `CLAUDE.md`、`AGENTS.md` / `GEMINI.md`、スキル(`.claude/skills/`)、フックが差し込む文 | 英語 |
|
|
38
|
-
| `prompts/` のトピックファイル(次の行の 3 文書を除く) | 日本語 |
|
|
39
|
-
| `prompts/review.md`、`prompts/review-rubric.md`、`prompts/sonar-hotspot-handling.md` | 英語 |
|
|
33
|
+
- 英語: `CLAUDE.md`、`AGENTS.md` / `GEMINI.md`、スキル(`.claude/skills/`)、フックが差し込む文、`prompts/review.md`、`prompts/review-rubric.md`、`prompts/sonar-hotspot-handling.md`
|
|
34
|
+
- 日本語: それ以外の `prompts/` のトピックファイル
|
|
40
35
|
|
|
41
|
-
|
|
36
|
+
英語の層から日本語のトピックファイルの節を指すときは、見出しの先頭の**英語 ID** を引く(例: `## no-clones — クローン禁止・…` を `principles.md` → "no-clones"。`pnpm josh doc:section` は前方一致で解決する)。ID の無い日本語見出しは原文のまま引く。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
## Step 3: 計画コメントを記録して通知する
|
|
2
2
|
|
|
3
3
|
1. 提案を人間が判断する
|
|
4
|
-
2. 採用した計画を Issue
|
|
5
|
-
-
|
|
4
|
+
2. 採用した計画を Issue に記録する。body が空なら計画をファイルに書き `gh api -X PATCH repos/{owner}/{repo}/issues/<N> --field body=@<path>` で書き込む(本文はパスで渡す — `shell-body.md`)。body があれば `pnpm josh issue:comment <N> --body-file <path>` でコメントする
|
|
5
|
+
- 計画が stash の復元を含むときの書き方: `operating-rules.md` → "no-self-staging"
|
|
6
6
|
3. Telegram で計画開始を通知する:
|
|
7
7
|
|
|
8
8
|
```bash
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
- `--task-type` はヘッダーのアイコンを決める(`planning` 📋 / `completion` ✅ / `failure` ❌ / `warning` ⚠️ / `kickoff_retry` 🔄 / `confirmation` ⏸️)
|
|
13
|
-
- `warning` は
|
|
13
|
+
- `warning` は `pnpm josh followup` が自分で送る種別で、手で打たない(joshuafolkken/kit#1628)
|
|
14
14
|
- `--repo-name` と `--issue-title` は未指定なら `gh` から自動取得される
|
|
15
15
|
- Issue URL を必ず含め、箇条書きの間に改行を入れる
|
|
16
|
-
- `kickoff`
|
|
16
|
+
- `kickoff` はここで**停止**する(実装に進まない)
|
|
17
17
|
|
|
18
|
-
4.
|
|
18
|
+
4. 作業ツリーに変更(ステージ済みを含む)が既にあれば退避する:
|
|
19
19
|
```bash
|
|
20
20
|
git stash push -u -m "plan: pre-existing changes"
|
|
21
21
|
```
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
```bash
|
|
24
24
|
pnpm josh ms
|
|
25
25
|
```
|
|
26
|
-
6.
|
|
27
|
-
ステップ 4 で stash
|
|
26
|
+
6. `pnpm josh latest:scope` が `required` と答えたときだけ `pnpm josh latest` を実行し、`dependency-update` スキルに従う(`.claude/skills/workflow-commands/latest-gate.md`)。脆弱性への override は `pnpm-workspace.yaml` の `overrides` に書く(pnpm 11/12 は `package.json` の `pnpm.overrides` を無視する)。
|
|
27
|
+
ステップ 4 で stash したら、ここでメッセージ指定で復元する(位置指定や引数なしの `git stash pop` は使わない — joshuafolkken/kit#2050):
|
|
28
28
|
```bash
|
|
29
29
|
pnpm josh stash:pop "plan: pre-existing changes"
|
|
30
30
|
```
|
|
31
|
-
7. **作業サマリを提示してから**実装を開始する(`
|
|
32
|
-
8.
|
|
31
|
+
7. **作業サマリを提示してから**実装を開始する(`report-format.md` → "作業前サマリはいつ・どう出すか")。Issue body が埋まっていても提示し、Issue コメントとしては投稿しない。
|
|
32
|
+
8. 実装完了後、lint/test より前に `prompts/refactoring.md` に従い、高・中優先度項目が残らなくなるまでリファクタリングする
|
|
33
33
|
9. 検証ゲート(`CLAUDE.md` の Completion gate)を実行する
|
|
34
34
|
|
|
35
|
-
`pnpm josh git`
|
|
35
|
+
`pnpm josh git` を実行する(`-y` で確認プロンプトをスキップ)。**子はバージョンを上げない** — 版を決めるのは `pnpm josh release` だけ(joshuafolkken/kit#1486)。Issue タイトルは実行前に `issue-template.md` の Step 1 冒頭に沿って整える。
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
pnpm josh git -y "<issue-title> #<issue-number>"
|
|
@@ -40,7 +40,7 @@ pnpm josh git -y "<issue-title> #<issue-number>"
|
|
|
40
40
|
|
|
41
41
|
### Recovery after failed push (pre-push hook blocked)
|
|
42
42
|
|
|
43
|
-
If `pnpm josh git -y` fails at the push step
|
|
43
|
+
If `pnpm josh git -y` fails at the push step, fix the blocking issue and recover with:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
46
|
# 1. Push manually after fixing the issue
|
|
@@ -51,8 +51,8 @@ pnpm josh pr
|
|
|
51
51
|
# equivalent: pnpm josh git -y --skip-commit --skip-push
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
Do not run `gh pr create` directly — it bypasses `build_body`, which writes `closes #N`.
|
|
55
55
|
|
|
56
56
|
### レビューからマージまで
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
レビューは実装したセッションがコミットの前に `pnpm josh review:brief` で始め、`/code-review` は `Agent` ツールのサブエージェントが実行する。周回の上限、残った指摘の振り分けと `pnpm josh epic:bundle`、マージを打つターンは `.claude/skills/workflow-commands/chain-rule.md` → "Run the review-to-merge chain"、"The review runs in a subagent, never a main-line skill load"、方針は `prompts/review.md` → "Review round cap"。**`/code-review` の出力で停止しない。**
|