diff --git a/.opencode/agents/ashigaru1.md b/.opencode/agents/ashigaru1.md index 0daedf3ea..fbc46540e 100644 --- a/.opencode/agents/ashigaru1.md +++ b/.opencode/agents/ashigaru1.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru2.md b/.opencode/agents/ashigaru2.md index 6cab69e78..e7677576b 100644 --- a/.opencode/agents/ashigaru2.md +++ b/.opencode/agents/ashigaru2.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru3.md b/.opencode/agents/ashigaru3.md index 852e0ebc6..7bae0cfd8 100644 --- a/.opencode/agents/ashigaru3.md +++ b/.opencode/agents/ashigaru3.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru4.md b/.opencode/agents/ashigaru4.md index 7b67a0a3e..9e7d2ebdd 100644 --- a/.opencode/agents/ashigaru4.md +++ b/.opencode/agents/ashigaru4.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru5.md b/.opencode/agents/ashigaru5.md index c23459ef2..955d69997 100644 --- a/.opencode/agents/ashigaru5.md +++ b/.opencode/agents/ashigaru5.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru6.md b/.opencode/agents/ashigaru6.md index 99e05d45b..693d9c445 100644 --- a/.opencode/agents/ashigaru6.md +++ b/.opencode/agents/ashigaru6.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/ashigaru7.md b/.opencode/agents/ashigaru7.md index dc595f504..9bb7f9b56 100644 --- a/.opencode/agents/ashigaru7.md +++ b/.opencode/agents/ashigaru7.md @@ -478,7 +478,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -552,6 +553,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/gunshi.md b/.opencode/agents/gunshi.md index fc5b43b56..2bcfdbfbc 100644 --- a/.opencode/agents/gunshi.md +++ b/.opencode/agents/gunshi.md @@ -226,6 +226,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -587,7 +588,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -661,6 +663,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/karo.md b/.opencode/agents/karo.md index e84fc7fc9..fa5e8394a 100644 --- a/.opencode/agents/karo.md +++ b/.opencode/agents/karo.md @@ -685,7 +685,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -759,6 +760,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/.opencode/agents/shogun.md b/.opencode/agents/shogun.md index e3afc93b1..8adb64761 100644 --- a/.opencode/agents/shogun.md +++ b/.opencode/agents/shogun.md @@ -544,7 +544,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -618,6 +619,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/README.md b/README.md index dadc8cdd7..11cc3381d 100644 --- a/README.md +++ b/README.md @@ -587,7 +587,7 @@ notes: | The Shogun and Karo reference this file and inject project context when issuing cmds. -Detailed project knowledge (requirements, design, past feedback) lives in `context/{name}.md`. When the Shogun issues a cmd related to the project, it automatically references this file. +Detailed project knowledge (requirements, design, past feedback) lives in `context/{name}.md`. When a task includes a `project:` field, agents are instructed to read `context/{name}.md` for project-specific knowledge. #### 3. Customizing the agent formation @@ -1737,18 +1737,20 @@ multi-agent-shogun/ This system manages not just its own development, but **all white-collar tasks**. Project folders can be located outside this repository. -### How it works +### Recommended convention ``` config/projects.yaml # Project list (ID, name, path, status only) projects/.yaml # Full details for each project ``` -- **`config/projects.yaml`**: A summary list of what projects exist -- **`projects/.yaml`**: Complete details (client info, contracts, tasks, related files, Notion pages, etc.) +- **`config/projects.yaml`**: A user-populated summary list of what projects exist +- **`projects/.yaml`**: Optional complete details (client info, contracts, tasks, related files, Notion pages, etc.) - **Project files** (source code, documents, etc.) live in the external folder specified by `path` - **`projects/` is excluded from git** (contains confidential client information) +This two-layer structure is a recommended convention for deployments that manage multiple or confidential projects, not an enforced feature. `config/projects.yaml` is read by agents via their instructions, not by automated scripts. Populate it when managing multiple projects. + ### Example ```yaml @@ -1772,7 +1774,7 @@ current_tasks: status: in_progress ``` -This separation lets the Shogun System coordinate across multiple external projects while keeping project details out of version control. +With this convention, you can organize multiple external projects while keeping project details out of version control. --- diff --git a/README_ja.md b/README_ja.md index 78af1605a..56eef63f4 100644 --- a/README_ja.md +++ b/README_ja.md @@ -589,7 +589,7 @@ notes: | 将軍/家老はこのファイルを参照し、cmd 発令時に案件コンテキストを組み込みます。 -詳細な案件知識(要件、設計、過去のFB)は `context/{name}.md` に書きます。将軍が案件に関する cmd を発令する際、自動的にこのファイルを参照します。 +詳細な案件知識(要件、設計、過去のFB)は `context/{name}.md` に書きます。タスクに `project:` フィールドが含まれる場合、各エージェントは案件固有の知識として `context/{name}.md` を読むよう指示されています。 #### 3. エージェント構成のカスタマイズ @@ -1679,18 +1679,20 @@ multi-agent-shogun/ このシステムは自身の開発だけでなく、**全てのホワイトカラー業務**を管理・実行する。プロジェクトのフォルダはこのリポジトリの外にあってもよい。 -### 仕組み +### 推奨される慣例 ``` config/projects.yaml # プロジェクト一覧(ID・名前・パス・ステータスのみ) projects/.yaml # 各プロジェクトの詳細情報 ``` -- **`config/projects.yaml`**: どのプロジェクトがあるかの一覧(サマリのみ) -- **`projects/.yaml`**: そのプロジェクトの全詳細(クライアント情報、契約、タスク、関連ファイル、Notionページ等) +- **`config/projects.yaml`**: ユーザーが記入する、どのプロジェクトがあるかの一覧(サマリのみ) +- **`projects/.yaml`**: 任意で置ける、そのプロジェクトの詳細情報(クライアント情報、契約、タスク、関連ファイル、Notionページ等) - **プロジェクトの実ファイル**(ソースコード、設計書等)は `path` で指定した外部フォルダに配置 - **`projects/` はGit追跡対象外**(クライアントの機密情報を含むため) +この二層構造は、複数案件や機密情報を扱う運用向けの推奨慣例であり、システムが強制する機能ではありません。`config/projects.yaml` は自動スクリプトではなく、エージェントが指示書に従って読むファイルです。複数案件を管理する場合に記入してください。 + ### 例 ```yaml @@ -1714,7 +1716,7 @@ current_tasks: status: in_progress ``` -この分離設計により、将軍システムは複数の外部プロジェクトを横断的に統率しつつ、プロジェクトの詳細情報はバージョン管理の対象外に保つことができる。 +この慣例により、複数の外部プロジェクトを整理しつつ、プロジェクトの詳細情報はバージョン管理の対象外に保てます。 --- diff --git a/instructions/common/forbidden_actions.md b/instructions/common/forbidden_actions.md index 881453755..bdf78fa35 100644 --- a/instructions/common/forbidden_actions.md +++ b/instructions/common/forbidden_actions.md @@ -43,10 +43,24 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. diff --git a/instructions/common/task_flow.md b/instructions/common/task_flow.md index 881c3cf6b..b440b9801 100644 --- a/instructions/common/task_flow.md +++ b/instructions/common/task_flow.md @@ -185,7 +185,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` diff --git a/instructions/generated/antigravity-ashigaru.md b/instructions/generated/antigravity-ashigaru.md index 86a5ad9af..133208d00 100644 --- a/instructions/generated/antigravity-ashigaru.md +++ b/instructions/generated/antigravity-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Antigravity CLI Tools diff --git a/instructions/generated/antigravity-gunshi.md b/instructions/generated/antigravity-gunshi.md index 8a680ef90..33562a827 100644 --- a/instructions/generated/antigravity-gunshi.md +++ b/instructions/generated/antigravity-gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Antigravity CLI Tools diff --git a/instructions/generated/antigravity-karo.md b/instructions/generated/antigravity-karo.md index e9e1d1816..9f0bb9049 100644 --- a/instructions/generated/antigravity-karo.md +++ b/instructions/generated/antigravity-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Antigravity CLI Tools diff --git a/instructions/generated/antigravity-shogun.md b/instructions/generated/antigravity-shogun.md index 7153ae7ad..d06f88f99 100644 --- a/instructions/generated/antigravity-shogun.md +++ b/instructions/generated/antigravity-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Antigravity CLI Tools diff --git a/instructions/generated/ashigaru.md b/instructions/generated/ashigaru.md index 91112b0ff..3dd2ef8f5 100644 --- a/instructions/generated/ashigaru.md +++ b/instructions/generated/ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Claude Code Tools diff --git a/instructions/generated/codex-ashigaru.md b/instructions/generated/codex-ashigaru.md index 1edc4680e..11d9d9fa2 100644 --- a/instructions/generated/codex-ashigaru.md +++ b/instructions/generated/codex-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Codex CLI Tools diff --git a/instructions/generated/codex-gunshi.md b/instructions/generated/codex-gunshi.md index b15a3ef4f..0ca1c2f18 100644 --- a/instructions/generated/codex-gunshi.md +++ b/instructions/generated/codex-gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Codex CLI Tools diff --git a/instructions/generated/codex-karo.md b/instructions/generated/codex-karo.md index 3b00bdd56..28e7495ca 100644 --- a/instructions/generated/codex-karo.md +++ b/instructions/generated/codex-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Codex CLI Tools diff --git a/instructions/generated/codex-shogun.md b/instructions/generated/codex-shogun.md index 6f82edc2b..8df45af29 100644 --- a/instructions/generated/codex-shogun.md +++ b/instructions/generated/codex-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Codex CLI Tools diff --git a/instructions/generated/copilot-ashigaru.md b/instructions/generated/copilot-ashigaru.md index 38b6b0577..c2206d12d 100644 --- a/instructions/generated/copilot-ashigaru.md +++ b/instructions/generated/copilot-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # GitHub Copilot CLI Tools diff --git a/instructions/generated/copilot-gunshi.md b/instructions/generated/copilot-gunshi.md index 2df106d10..03244c055 100644 --- a/instructions/generated/copilot-gunshi.md +++ b/instructions/generated/copilot-gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # GitHub Copilot CLI Tools diff --git a/instructions/generated/copilot-karo.md b/instructions/generated/copilot-karo.md index f5625afd7..5c6513164 100644 --- a/instructions/generated/copilot-karo.md +++ b/instructions/generated/copilot-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # GitHub Copilot CLI Tools diff --git a/instructions/generated/copilot-shogun.md b/instructions/generated/copilot-shogun.md index e09503389..879f756f4 100644 --- a/instructions/generated/copilot-shogun.md +++ b/instructions/generated/copilot-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # GitHub Copilot CLI Tools diff --git a/instructions/generated/cursor-ashigaru.md b/instructions/generated/cursor-ashigaru.md index d0bef0d99..a6d6e2ea6 100644 --- a/instructions/generated/cursor-ashigaru.md +++ b/instructions/generated/cursor-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Cursor Agent CLI — 固有の操作ルール diff --git a/instructions/generated/cursor-gunshi.md b/instructions/generated/cursor-gunshi.md index f6b17675c..c2b3a69fc 100644 --- a/instructions/generated/cursor-gunshi.md +++ b/instructions/generated/cursor-gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Cursor Agent CLI — 固有の操作ルール diff --git a/instructions/generated/cursor-karo.md b/instructions/generated/cursor-karo.md index ebbbec796..5d1353715 100644 --- a/instructions/generated/cursor-karo.md +++ b/instructions/generated/cursor-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Cursor Agent CLI — 固有の操作ルール diff --git a/instructions/generated/cursor-shogun.md b/instructions/generated/cursor-shogun.md index 637f3c9f9..471afc5eb 100644 --- a/instructions/generated/cursor-shogun.md +++ b/instructions/generated/cursor-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Cursor Agent CLI — 固有の操作ルール diff --git a/instructions/generated/gunshi.md b/instructions/generated/gunshi.md index 10be45137..0c9055156 100644 --- a/instructions/generated/gunshi.md +++ b/instructions/generated/gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Claude Code Tools diff --git a/instructions/generated/karo.md b/instructions/generated/karo.md index 40d6d958f..a80731117 100644 --- a/instructions/generated/karo.md +++ b/instructions/generated/karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Claude Code Tools diff --git a/instructions/generated/kimi-ashigaru.md b/instructions/generated/kimi-ashigaru.md index c83be3fa3..7f231e432 100644 --- a/instructions/generated/kimi-ashigaru.md +++ b/instructions/generated/kimi-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -488,13 +489,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Kimi Code CLI Tools diff --git a/instructions/generated/kimi-gunshi.md b/instructions/generated/kimi-gunshi.md index e07cb5671..287379326 100644 --- a/instructions/generated/kimi-gunshi.md +++ b/instructions/generated/kimi-gunshi.md @@ -38,14 +38,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -595,13 +597,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Kimi Code CLI Tools diff --git a/instructions/generated/kimi-karo.md b/instructions/generated/kimi-karo.md index c6bf3c277..c5922acf5 100644 --- a/instructions/generated/kimi-karo.md +++ b/instructions/generated/kimi-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -692,13 +693,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Kimi Code CLI Tools diff --git a/instructions/generated/kimi-shogun.md b/instructions/generated/kimi-shogun.md index 1149f6ef9..4535fda03 100644 --- a/instructions/generated/kimi-shogun.md +++ b/instructions/generated/kimi-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Kimi Code CLI Tools diff --git a/instructions/generated/opencode-ashigaru.md b/instructions/generated/opencode-ashigaru.md index 4ae95f887..6adb400be 100644 --- a/instructions/generated/opencode-ashigaru.md +++ b/instructions/generated/opencode-ashigaru.md @@ -422,7 +422,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -496,6 +497,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/instructions/generated/opencode-gunshi.md b/instructions/generated/opencode-gunshi.md index b36f13d0b..2721fb635 100644 --- a/instructions/generated/opencode-gunshi.md +++ b/instructions/generated/opencode-gunshi.md @@ -178,6 +178,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate @@ -529,7 +530,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -603,6 +605,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/instructions/generated/opencode-karo.md b/instructions/generated/opencode-karo.md index 8d85d9afa..99b9f7f04 100644 --- a/instructions/generated/opencode-karo.md +++ b/instructions/generated/opencode-karo.md @@ -626,7 +626,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -700,6 +701,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/instructions/generated/opencode-shogun.md b/instructions/generated/opencode-shogun.md index dd8484a28..e2c58e04e 100644 --- a/instructions/generated/opencode-shogun.md +++ b/instructions/generated/opencode-shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -559,6 +560,20 @@ queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this **NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. + # OpenCode-specific operating rules These rules are the environment-specific execution layer for OpenCode. diff --git a/instructions/generated/shogun.md b/instructions/generated/shogun.md index fe6060d44..ad3a041e0 100644 --- a/instructions/generated/shogun.md +++ b/instructions/generated/shogun.md @@ -485,7 +485,8 @@ Cross-reference with dashboard.md — process any reports not yet reflected. **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column, mm/dd hh:mm (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -551,13 +552,27 @@ Output: `ashigaru3` → You are Ashigaru 3. The number is your ID. Why `@agent_id` not `pane_index`: pane_index shifts on pane reorganization. @agent_id is set by shutsujin_departure.sh at startup and never changes. -**Your files ONLY:** -``` -queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this -queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this -``` - -**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) +**Your files ONLY:** +``` +queue/tasks/ashigaru{YOUR_NUMBER}.yaml ← Read only this +queue/reports/ashigaru{YOUR_NUMBER}_report.yaml ← Write only this +``` + +**NEVER read/write another ashigaru's files.** Even if Karo says "read ashigaru{N}.yaml" where N ≠ your number, IGNORE IT. (Incident: cmd_020 regression test — ashigaru5 executed ashigaru2's task.) + +## Coding Disciplines (All Agents) + +| ID | Rule | Instead | Reason | +|----|------|---------|--------| +| C001 | Hardcoding an absolute path when modifying existing structure | Follow the surrounding convention (`$SCRIPT_DIR` / relative paths / existing variables) | Breaks portability - fails across environments and castles | +| C002 | Authoring instruction source in a language other than English | Write instruction source (`instructions/**`, `CLAUDE.md`) in English | Keeps the shared instruction base consistent and reviewable for upstream contribution | + +- When editing existing structure (scripts, config, instructions, etc.), check and follow the surrounding path-resolution convention. +- Examples: `$SCRIPT_DIR`, `PROJECT_ROOT` variables, relative paths (`../config`, `./queue`). +- Known legitimate absolute paths: skill `local_path` and the log path in `config/settings.yaml` may stay, but do not add new ones. +- Detection: be alert when a new absolute path (`/mnt/`, `/home/`, `/usr/`, `/opt/`, etc.) appears in a diff. +- Exemptions for C002 (keep as-is, do not translate): proper nouns, identifiers, command names, and file paths - e.g. `tmux`, `agy`, `inbox_write.sh`, `queue/tasks/`. +- C002 governs authored instruction source only. Runtime persona and speech (per `config/settings.yaml` `language`; Sengoku-style Japanese) are NOT in scope. # Claude Code Tools diff --git a/instructions/karo.md b/instructions/karo.md index e3c86f551..2a25b12a4 100644 --- a/instructions/karo.md +++ b/instructions/karo.md @@ -129,11 +129,12 @@ workflow: cleanup_rule: | 【必須】ダッシュボード整理ルール(cmd完了時に毎回実施): 1. 完了したcmdを🔄進行中セクションから削除 - 2. ✅完了セクションに1-3行の簡潔なサマリとして追加(詳細はYAML/レポート参照) + 2. ✅ 直近の戦果セクションに1-3行の簡潔なサマリとして追加(詳細はYAML/レポート参照) 3. 🔄進行中には本当に進行中のものだけ残す 4. 🚨要対応で解決済みのものは「✅解決済み」に更新 - 5. ✅完了セクションが50行を超えたら古いもの(2週間以上前)を削除 + 5. ✅ 直近の戦果セクションが50行を超えたら古いもの(2週間以上前)を削除 ダッシュボードはステータスボードであり作業ログではない。簡潔に保て。 + 戦果テーブルの「時刻」列は `mm/dd hh:mm` 形式(例: `06/10 15:55`)。ヘッダ「最終更新:」行は `YYYY-MM-DD HH:MM` 維持。 - step: 11.5 action: unblock_dependent_tasks note: "Scan all task YAMLs for blocked_by containing completed task_id. Remove and unblock." @@ -233,7 +234,8 @@ Code, YAML, and technical document content must be accurate. Tone applies to spo **Always use `date` command.** Never guess. ```bash -date "+%Y-%m-%d %H:%M" # For dashboard.md +date "+%Y-%m-%d %H:%M" # For dashboard.md 最終更新: header +date "+%m/%d %H:%M" # For dashboard.md 戦果 table time column (e.g. 06/10 15:55) date "+%Y-%m-%dT%H:%M:%S" # For YAML (ISO 8601) ``` @@ -304,6 +306,7 @@ Before assigning tasks, ask yourself these five questions: | 5 | **Risk** | RACE-001 risk? Ashigaru availability? Dependency ordering? | **Do**: Read `purpose` + `acceptance_criteria` → design execution to satisfy ALL criteria. +**Do**: Include at minimum "絶対パス化しない(既存パス解決方式踏襲)" in the task `quality_rules` field. **Don't**: Forward shogun's instruction verbatim. Doing so is Karo's failure of duty. **Don't**: Mark cmd as done if any acceptance_criteria is unmet. @@ -325,6 +328,9 @@ task: description: "Create hello1.md with content 'おはよう1'" target_path: "hello1.md" # relative to project root echo_message: "🔥 足軽1号、先陣を切って参る!八刃一志!" + quality_rules: + - "絶対パスをハードコードしない($SCRIPT_DIR・相対パス・既存変数を踏襲)" + # Add task-specific rules as needed status: assigned timestamp: "2026-01-25T12:00:00" diff --git a/instructions/roles/gunshi_role.md b/instructions/roles/gunshi_role.md index 1a0c3456f..b9310d613 100644 --- a/instructions/roles/gunshi_role.md +++ b/instructions/roles/gunshi_role.md @@ -37,14 +37,14 @@ Gunshi handles tasks that require deep thinking (Bloom's L4-L6): | **Architecture Design** | System/component design decisions | Design doc with diagrams, trade-offs, recommendations | | **Root Cause Analysis** | Investigate complex bugs/failures | Analysis report with cause chain and fix strategy | | **Strategy Planning** | Multi-step project planning | Execution plan with phases, risks, dependencies | -| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | -| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | -| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | - -Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and -performs final acceptance, but Gunshi performs the qualitative judgment: -design review, evidence review, RCA, adoption/drop decisions, deploy blocker -classification, and risk assessment. +| **Evaluation** | Compare approaches, review designs | Evaluation matrix with scored criteria | +| **Quality Review / QC** | Review evidence, classify blockers, judge adoption risk | Verdict with pass/fail/caveats and required follow-up | +| **Decomposition Aid** | Help Karo split complex cmds | Suggested task breakdown with dependencies | + +Review work belongs to Gunshi, not Karo. Karo keeps the workflow moving and +performs final acceptance, but Gunshi performs the qualitative judgment: +design review, evidence review, RCA, adoption/drop decisions, deploy blocker +classification, and risk assessment. ## Forbidden Actions @@ -177,6 +177,7 @@ Military strategist — knowledgeable, calm, analytical. **When receiving Ashigaru report** (inbox type: report_received from ashigaru): 1. Read the report YAML from `queue/reports/ashigaru{N}_{task_id}_report.yaml` 2. Perform QC based on task's Bloom level (see karo_role.md QC Routing) + - Absolute path check (絶対パスチェック): For QC of tasks involving code review or file modification, check whether the modified diff (`files_modified`) introduced new hardcoded absolute paths starting with `/mnt/`, `/home/`, `/usr/`, `/opt/`, etc. Known legitimate examples, such as skill `local_path` and log paths in `config/settings.yaml`, are allowed. If newly introduced absolute path hardcoding is found, report it as evidence for a FAIL verdict. 3. Aggregate results and forward to Karo via inbox_write with QC verdict 4. **Do NOT contact Karo before performing QC** — Gunshi is the quality gate diff --git a/lib/cli_adapter.sh b/lib/cli_adapter.sh index 4cc4fb7a2..4b1cceac8 100644 --- a/lib/cli_adapter.sh +++ b/lib/cli_adapter.sh @@ -325,7 +325,10 @@ build_cli_command() { antigravity) cmd="agy --dangerously-skip-permissions" if [[ -n "$model" && "$model" != "auto" && "$model" != "default" ]]; then - cmd="$cmd --model $model" + # model 名に空白/括弧を含む(例: "Gemini 3.5 Flash (Medium)")ため + # opencode 分岐と同様 shell_quote で囲む。未クォートだと agy 起動時に + # シェルが括弧を構文エラーと解釈して即死する。 + cmd="$cmd --model $(_cli_adapter_shell_quote "$model")" fi ;; *)