From ebaa09b03e433c5ecd2d31edca9a3600594082a6 Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 22:23:34 +0900 Subject: [PATCH 1/6] docs(skills): add Symphony ticket requirements Define the project, Repository label, execution and dependency requirements for Linear tickets handed to Symphony. Include essential issue content and verification after registration without duplicating ordinary Linear usage. Keep Personal Symphony explicit for this environment while resolving IDs and other environments from their configuration. Validation: skill quick validation, procedure review, diff check, and standalone PR body validation passed. Full Elixir checks are not applicable for this skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .codex/skills/symphony-ticket/SKILL.md diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md new file mode 100644 index 00000000000..c6f7e11fc27 --- /dev/null +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -0,0 +1,43 @@ +--- +name: symphony-ticket +description: Symphonyに渡すLinearチケットの必須条件を確認するときに使う。 +--- + +# Symphony Ticket + +Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 + +## 必須条件 + +- **対象プロジェクト**:対象のSymphonyが監視するLinearプロジェクトに登録する。 + この環境では **Projectを `Personal Symphony` に指定する**。変更対象のリポジトリが + 異なっても同じProjectを使う。別環境では監視先の設定に合わせる。 + Team・プロジェクトID・slugは利用環境から特定する。 +- **Repositoryラベル**:有効な `Repository` グループの子ラベルを**1個だけ**付ける。 + 親・子とも未アーカイブで、子ラベルが実行ホストに登録済みの対象リポジトリに + 対応していること。本文のURLやラベルのdescriptionでは代替できない。 + 複数リポジトリの変更はチケットを分け、開始済みチケットの実行先は付け替えない。 +- **実行条件**:実行投入する場合は、使用中の `WORKFLOW.md` にある対象状態・ + 必須ラベル・担当者条件を満たす。記票だけの場合や条件が未確認の場合は、 + その環境の実行対象外の状態に置く。 +- **依存関係**:先行作業がある場合はLinearの `blockedBy` で指定する。 + 本文のリンクや親子関係だけでは実行順の指定にならない。 + +## 本文に含める事項 + +会話履歴なしで着手・完了判定できるよう、次を記載する。書式は問わない。 + +- 目的と期待する変更。バグなら再現条件・観測した挙動。 +- 対象リポジトリ・変更範囲・制約。Repositoryラベルの対象と一致させる。 +- 観測可能な受け入れ条件と、必要な検証方法・期待結果。 +- 先行Issue・参照資料・必要なアクセスがあれば、その情報。秘密値は含めない。 + +`Validation` / `Test Plan` / `Testing` に記載した内容は実行時の必須条件になる。 +対象リポジトリの手順に沿った、実行可能な検証を指定する。 + +## 登録後の確認 + +保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。 +ラベルの親グループやページ分割された結果も確認し、不足を推測で補わない。 +不一致は修正して再取得し、未確認事項は明示する。 +IssueのURLと確認結果を報告する。実行条件を満たしたことと、実行開始は区別する。 From c630780b46e9d8337a3fc38d7f7e9de9792ab889 Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 22:42:52 +0900 Subject: [PATCH 2/6] fix(skills): verify ticket routing before activation Trigger the skill for creation and updates as well as requirement checks. Keep new work outside active states until its fields and dependencies are saved and verified, then activate and read back the final state. Apply optional routing requirements only when configured. Verify assignee IDs when a filter exists, resolving me against Symphony's identity rather than the ticket author's identity. Preserve already-running issue states. Validation: skill validator, diff check, standalone PR body lint, and procedure walkthroughs passed. Full Elixir validation is not applicable for this skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md index c6f7e11fc27..4a6164e8aca 100644 --- a/.codex/skills/symphony-ticket/SKILL.md +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -1,6 +1,6 @@ --- name: symphony-ticket -description: Symphonyに渡すLinearチケットの必須条件を確認するときに使う。 +description: Symphonyに渡すLinearチケットを作成・更新・確認するときに使う。 --- # Symphony Ticket @@ -17,9 +17,10 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 親・子とも未アーカイブで、子ラベルが実行ホストに登録済みの対象リポジトリに 対応していること。本文のURLやラベルのdescriptionでは代替できない。 複数リポジトリの変更はチケットを分け、開始済みチケットの実行先は付け替えない。 -- **実行条件**:実行投入する場合は、使用中の `WORKFLOW.md` にある対象状態・ - 必須ラベル・担当者条件を満たす。記票だけの場合や条件が未確認の場合は、 - その環境の実行対象外の状態に置く。 +- **実行条件**:`WORKFLOW.md` と環境変数から実行環境で有効な条件を確認する。 + 対象状態に加え、追加の必須ラベル・担当者条件は設定されている場合だけ満たす。 + 担当者条件がなければ割当は不要。新規投入では、以下の登録後確認が終わるまで + その環境の実行対象外の状態で本文・ラベル・依存関係を揃える。 - **依存関係**:先行作業がある場合はLinearの `blockedBy` で指定する。 本文のリンクや親子関係だけでは実行順の指定にならない。 @@ -38,6 +39,10 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 ## 登録後の確認 保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。 +担当者条件がある場合だけ、保存後の担当者IDを実行環境が解決した担当者IDと照合する。 +`me` はSymphonyの認証主体を指し、記票ツールの利用者とは限らない。 ラベルの親グループやページ分割された結果も確認し、不足を推測で補わない。 不一致は修正して再取得し、未確認事項は明示する。 +新規投入は全項目の確認後、実行投入を依頼されている場合だけ最後に実行対象の状態へ移し、 +状態を再取得する。記票のみなら実行対象外に保つ。既に実行中のIssueをこの手順で戻さない。 IssueのURLと確認結果を報告する。実行条件を満たしたことと、実行開始は区別する。 From b78c19e6f934cee91d1789ba219ebc48daab6507 Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 22:49:21 +0900 Subject: [PATCH 3/6] fix(skills): stage queued updates and preserve dependency gating Stage new issues and queued updates in a non-active, non-terminal state before editing fields, and verify the saved issue before activation. Coordinate with execution for running or indeterminate issues instead of automatically resetting their state. Document that the standard Linear client checks blockers only in Todo. Use Todo when active, or retain blocked work outside active states until all blockers are terminal. Keep optional assignee requirements conditional. Validation: skill validator, diff check, standalone PR body validation, and walkthroughs for queued updates, running/unknown states, and blocker routing passed. Full Elixir validation does not apply to this skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md index 4a6164e8aca..50469e749b2 100644 --- a/.codex/skills/symphony-ticket/SKILL.md +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -19,10 +19,12 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 複数リポジトリの変更はチケットを分け、開始済みチケットの実行先は付け替えない。 - **実行条件**:`WORKFLOW.md` と環境変数から実行環境で有効な条件を確認する。 対象状態に加え、追加の必須ラベル・担当者条件は設定されている場合だけ満たす。 - 担当者条件がなければ割当は不要。新規投入では、以下の登録後確認が終わるまで - その環境の実行対象外の状態で本文・ラベル・依存関係を揃える。 + 担当者条件がなければ割当は不要。 - **依存関係**:先行作業がある場合はLinearの `blockedBy` で指定する。 本文のリンクや親子関係だけでは実行順の指定にならない。 + 標準Linearクライアントの依存チェックは `Todo` のみ。未完了・状態不明のblockerが + ある場合は、`Todo` が実行対象ならそこへ投入する。それ以外は全blockerが設定上の + 終端状態になるまで実行対象外に保つ。 ## 本文に含める事項 @@ -36,13 +38,17 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 `Validation` / `Test Plan` / `Testing` に記載した内容は実行時の必須条件になる。 対象リポジトリの手順に沿った、実行可能な検証を指定する。 -## 登録後の確認 +## 保存と実行投入 + +新規作成と実行待ちIssueの更新は、実行対象外の非終端状態で行う。 +既存IssueはSymphony側の実行状況を確認し、実行待ちなら内容の変更前にその状態へ移して +再取得する。実行中・判定不能なら自動で状態を戻さず、実行側と調整する。 保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。 担当者条件がある場合だけ、保存後の担当者IDを実行環境が解決した担当者IDと照合する。 `me` はSymphonyの認証主体を指し、記票ツールの利用者とは限らない。 ラベルの親グループやページ分割された結果も確認し、不足を推測で補わない。 不一致は修正して再取得し、未確認事項は明示する。 -新規投入は全項目の確認後、実行投入を依頼されている場合だけ最後に実行対象の状態へ移し、 -状態を再取得する。記票のみなら実行対象外に保つ。既に実行中のIssueをこの手順で戻さない。 +準備したIssueは全項目の確認後、実行投入を依頼されている場合だけ、上記の依存条件を +満たす実行開始用の対象状態へ最後に移して再取得する。記票のみなら実行対象外に保つ。 IssueのURLと確認結果を報告する。実行条件を満たしたことと、実行開始は区別する。 From 71fa620f6ce9c1edd544c2390cd5d7c2b7d1f503 Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 23:23:48 +0900 Subject: [PATCH 4/6] fix(skills): leave active ticket coordination to execution Limit ticket creation and updates to inactive, non-terminal issues. Leave active and unknown-state issues unchanged and hand them to the execution-side operating procedure, even when they appear queued. A runtime snapshot cannot prevent a scheduler from claiming an issue before a later state change. Remove that check-then-reset procedure instead of adding scheduler pause or reservation machinery to this skill. Validation: skill validator, diff check, standalone PR body lint, and walkthroughs of inactive, active queued, running, and unknown-state issues passed. Full Elixir validation does not apply to this skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md index 50469e749b2..9f69ecf1818 100644 --- a/.codex/skills/symphony-ticket/SKILL.md +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -40,9 +40,9 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 ## 保存と実行投入 -新規作成と実行待ちIssueの更新は、実行対象外の非終端状態で行う。 -既存IssueはSymphony側の実行状況を確認し、実行待ちなら内容の変更前にその状態へ移して -再取得する。実行中・判定不能なら自動で状態を戻さず、実行側と調整する。 +新規作成・更新は、実行対象外の非終端状態のIssueに限る。 +既存Issueが実行対象の状態にある場合や状態を確認できない場合は、待機中に見えても +このSkillでは内容・状態を変更せず、実行側の運用手順に引き渡す。 保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。 担当者条件がある場合だけ、保存後の担当者IDを実行環境が解決した担当者IDと照合する。 From d2bba4d82d5de6793be8778ae72acbd4780e9c1e Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 23:30:22 +0900 Subject: [PATCH 5/6] fix(skills): bound initial activation and ambiguous creates Name Todo as this deployment's initial-work state and exclude approval or rework states from new execution. Other deployments use their configured initial-work state while preserving the dependency condition. Do not repeat a create with an unknown outcome. Hold execution until the existing issue is identified instead of adding a creation retry protocol. Validation: skill validator, diff check, standalone PR body validation, and walkthroughs for lifecycle states and ambiguous creates passed. Full Elixir validation does not apply to this skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md index 9f69ecf1818..4af8561a0eb 100644 --- a/.codex/skills/symphony-ticket/SKILL.md +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -43,6 +43,7 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 新規作成・更新は、実行対象外の非終端状態のIssueに限る。 既存Issueが実行対象の状態にある場合や状態を確認できない場合は、待機中に見えても このSkillでは内容・状態を変更せず、実行側の運用手順に引き渡す。 +作成の成否が不明な場合は再作成せず、既存Issueを特定できるまで実行投入を保留する。 保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。 担当者条件がある場合だけ、保存後の担当者IDを実行環境が解決した担当者IDと照合する。 @@ -51,4 +52,6 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 不一致は修正して再取得し、未確認事項は明示する。 準備したIssueは全項目の確認後、実行投入を依頼されている場合だけ、上記の依存条件を 満たす実行開始用の対象状態へ最後に移して再取得する。記票のみなら実行対象外に保つ。 +初回投入先はこの運用では `Todo`、別環境ではその初回着手用の状態を使う。 +`Merging`・`Rework` など承認・再作業用の状態には新規投入しない。 IssueのURLと確認結果を報告する。実行条件を満たしたことと、実行開始は区別する。 From a29bdab3ae1e666c91f2df13c0e8e060fba58cc8 Mon Sep 17 00:00:00 2001 From: big-mon <26018409+big-mon@users.noreply.github.com> Date: Thu, 24 Sep 2026 23:35:31 +0900 Subject: [PATCH 6/6] fix(skills): prepare only unstarted issues in a holding state Specify Backlog as this deployment's pre-execution holding state and use an equivalent initial holding state elsewhere. Exclude Human Review and other review or approval stages even when they are inactive. Hand existing issues outside the unstarted holding state to execution without mutation. Review-stage requirement changes follow rework instead of invalidating the requirements of a review-ready PR in place. Validation: skill validator, diff check, standalone PR body lint, and walkthroughs of Backlog, active, Human Review, terminal, and unknown issues passed. Full Elixir validation is not applicable to a skill-only change. Co-authored-by: Codex --- .codex/skills/symphony-ticket/SKILL.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.codex/skills/symphony-ticket/SKILL.md b/.codex/skills/symphony-ticket/SKILL.md index 4af8561a0eb..cff83564968 100644 --- a/.codex/skills/symphony-ticket/SKILL.md +++ b/.codex/skills/symphony-ticket/SKILL.md @@ -40,9 +40,10 @@ Repositoryラベルで実行先を選ぶSymphony向けの記票要件。 ## 保存と実行投入 -新規作成・更新は、実行対象外の非終端状態のIssueに限る。 -既存Issueが実行対象の状態にある場合や状態を確認できない場合は、待機中に見えても -このSkillでは内容・状態を変更せず、実行側の運用手順に引き渡す。 +新規作成・更新は、未着手Issueの着手前保留状態(この運用では `Backlog`)に限る。 +別環境では同用途の実行対象外・非終端状態を使う。`Human Review` などレビュー・承認段階は +保留先にしない。既存Issueがこの対象外または判定不能なら内容・状態を変更せず、 +実行側の運用手順に引き渡す。レビュー段階の要件変更は再作業の手順で扱う。 作成の成否が不明な場合は再作成せず、既存Issueを特定できるまで実行投入を保留する。 保存後にIssueを再取得し、登録先・状態・全ラベル・本文・依存関係を上記要件と照合する。