@takagaki/cortex-decisions-viewer 0.4.37 → 0.4.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/render.js +75 -171
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -269,89 +269,57 @@ function tutorialChallenge4Prompt(decisions) {
|
|
|
269
269
|
}
|
|
270
270
|
/**
|
|
271
271
|
* 書き込み・外部連携をともなうチャレンジのプロンプト。
|
|
272
|
-
*
|
|
273
|
-
*
|
|
272
|
+
* 規約はプロンプトに書き写さず、規約のあるファイル(README.md・template.md)をAIに読ませ、
|
|
273
|
+
* 中身は利用者に聞き返させる(AI導線ボタンのプロンプトと同じ方針)。
|
|
274
|
+
* 規約がどこにも無い手順(外部サービスへのつなぎ方・投稿経路の判定)だけを骨子として残す。
|
|
275
|
+
* スキルが使える環境ではそちらを優先させる旨を冒頭に添える。
|
|
274
276
|
*/
|
|
275
277
|
const TUT_MEMBER_PROMPT = [
|
|
276
|
-
"(update-member
|
|
278
|
+
"(update-member スキルが使える環境なら、そのスキルの手順を優先してください。)",
|
|
277
279
|
"",
|
|
278
|
-
"Cortex/Members/records/
|
|
280
|
+
"Cortex/Members/README.md と Cortex/Members/template.md を読んで規約を把握してから、Cortex/Members/records/ にあるわたし自身のメンバーレコードの表示名(title)を変更してください。Gold層へ書き込む練習です。名簿にわたしのレコードが無ければ、新規に1件作ってかまいません。",
|
|
281
|
+
"わたしが誰で、何をどう変えたいかは、まずわたしに質問してください。",
|
|
282
|
+
"あなた(人間)が内容を確認して編集したので、status が draft なら active に上げてください。",
|
|
283
|
+
"書き込む前に、作成・変更する内容を提示して承認を得てください。",
|
|
279
284
|
"",
|
|
280
|
-
"
|
|
281
|
-
"- 名簿は更新型です。氏名・所属・役割が変わったら frontmatter・本文を直接更新してかまいません(変更履歴は git が持ちます)",
|
|
282
|
-
"- 新しい表記揺れ(文字起こしの誤変換・呼称)は新規ファイルを作らず aliases に追記します",
|
|
283
|
-
"- 本人やPMに確認が取れたら status: draft を active に上げます。確証が無い項目は推測で埋めず空のままにします",
|
|
284
|
-
"- 離任しても削除せず status: inactive にします(過去の議事録・決定の人名正規化の根拠として残すため)",
|
|
285
|
-
"",
|
|
286
|
-
"手順:",
|
|
287
|
-
"1. Cortex/Members/README.md(スキーマ)と、対象になるレコードを読む",
|
|
288
|
-
"2. わたしのレコードが無ければ、ファイル名 records/{氏名(スペース無し)}.md・id member:{氏名(スペース無し)} で新規に作る",
|
|
289
|
-
"3. frontmatter の必須は type: member / id(member:{氏名(スペース無し)}) / title / description / status。任意は yomi・aliases・org・side(cm | client | vendor)・role・email。README 定義以外のフィールドは追加しない",
|
|
290
|
-
"4. 名簿に書くのは氏名・所属・役割・表記揺れだけ。人の評価・人事・単価・工数は書かない",
|
|
291
|
-
"",
|
|
292
|
-
"共通ルール:",
|
|
293
|
-
"- 書き込む前に、作成・更新する内容を提示して承認を得てください",
|
|
294
|
-
"- 同じ人に複数ファイルを作らないよう、既存レコードとの重複を必ず確認してください",
|
|
295
|
-
"- relations の target にファイルパスは書かず、安定ID(member:{氏名} / 決定ID YYYYMMDD-NNN / 課題キー 等)で張ってください",
|
|
296
|
-
"- 売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)",
|
|
285
|
+
"売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)。",
|
|
297
286
|
].join("\n");
|
|
298
287
|
const TUT_BACKLOG_PROMPT = [
|
|
299
|
-
"(backlog-push
|
|
288
|
+
"(backlog-push スキルが使える環境なら、そのスキルの手順を優先してください。)",
|
|
300
289
|
"",
|
|
301
290
|
"Backlogの課題に、わたしの名義でコメントを1件投稿してください。Backlogの画面を開かずにAIから記票する練習です。",
|
|
291
|
+
"どの課題に何を書くかは、まずわたしに質問してください(課題は 課題管理/issues/ から選べます。課題キーは各ファイルの「基本情報 > 課題キー」)。",
|
|
302
292
|
"",
|
|
303
|
-
"Backlog
|
|
304
|
-
"
|
|
305
|
-
"
|
|
293
|
+
"投稿経路は次の優先順で判定し、Backlog上の名義とあわせて先に伝えてください。",
|
|
294
|
+
"1. mcp__backlog__ で始まるツール(あなた本人の名義。手元にAPIキーは不要)",
|
|
295
|
+
"2. 環境変数 DOMAIN / PROJECT_KEY / BACKLOG_API_KEY があれば Backlog REST API を直接呼ぶ(キーの持ち主の名義)",
|
|
296
|
+
"3. 課題管理/backlog-proxy.json(url / projectKey / token)の中央プロキシ(共有bot名義になるため、本文の冒頭に自分の名前を記名する)",
|
|
297
|
+
"4. どれも無ければ、つなぎ方(手元の Claude Code なら /mcp コマンドから backlog、クラウドならセッションのコネクタ設定)を案内して止まる",
|
|
306
298
|
"",
|
|
307
|
-
"
|
|
308
|
-
"
|
|
309
|
-
"
|
|
310
|
-
" - 使えない場合、環境変数 DOMAIN / PROJECT_KEY / BACKLOG_API_KEY が参照できるなら Backlog REST API を直接呼ぶ(キーの持ち主の名義)",
|
|
311
|
-
" - どちらも無ければ 課題管理/backlog-proxy.json(url / projectKey / token)を読み、その中央プロキシ経由で投稿する(共有bot名義になるため、本文の冒頭に自分の名前を記名する)",
|
|
312
|
-
" - 3つとも無ければ、上記のつなぎ方を案内して止まる",
|
|
313
|
-
"2. 課題管理/issues/ からコメントする課題を1件選ぶ(候補を挙げて確認する)。課題キーは各ファイルの「基本情報 > 課題キー」にある",
|
|
314
|
-
"3. 投稿する課題キー・本文・使う経路・Backlog上の名義を提示して、承認を得る",
|
|
315
|
-
"4. 承認後に投稿し、投稿先のURLを報告する",
|
|
316
|
-
"",
|
|
317
|
-
"注意:",
|
|
318
|
-
"- 今回はコメントの追加だけです。課題の削除・クローズ・属性変更はしないでください",
|
|
319
|
-
"- 売上・単価・工数・人事評価などの内部限定情報は書かないでください(顧客も閲覧します)",
|
|
299
|
+
"投稿する前に、課題キー・本文・経路・名義を提示して承認を得てください。投稿後は投稿先のURLを報告してください。",
|
|
300
|
+
"今回はコメントの追加だけです。課題の削除・クローズ・属性変更はしないでください。",
|
|
301
|
+
"売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)。",
|
|
320
302
|
].join("\n");
|
|
321
303
|
const TUT_DESIGN_PROMPT = [
|
|
322
|
-
"デザイン/inventory/ の画面インベントリから画面を1つ選び、それがどんな画面なのかを説明してください。",
|
|
323
|
-
"",
|
|
324
|
-
"
|
|
325
|
-
"
|
|
326
|
-
"2. その画面のファイルを読み、画面の役割・主な要素・前後の画面とのつながりを、読み取れる範囲で説明する",
|
|
327
|
-
"3. 関連する決定(Cortex/Decisions/)・用語(Cortex/Glossary/)・課題(課題管理/issues/)があれば、安定IDをたどって補足する",
|
|
328
|
-
"4. 最後に、Figmaで実物を開くリンクを提示する",
|
|
329
|
-
"",
|
|
330
|
-
"注意:",
|
|
331
|
-
"- 読むだけです。ファイルの作成・更新はしないでください",
|
|
332
|
-
"- インベントリはFigmaからの同期で上書きされる生成物です。手で編集しないでください",
|
|
304
|
+
"デザイン/inventory/ の画面インベントリから画面を1つ選び、それがどんな画面なのかを説明してください。1画面1ファイルで、frontmatter に安定ID(design:{fileKey}:{nodeId})とFigmaへのディープリンクがあります。",
|
|
305
|
+
"どの画面が見たいかは、まずわたしに質問してください(希望が無ければ主要そうな画面をあなたが選んでかまいません)。",
|
|
306
|
+
"画面の役割・主な要素・前後の画面とのつながりを説明し、関連する決定・用語・課題があれば安定IDをたどって補足し、最後にFigmaで実物を開くリンクを提示してください。",
|
|
307
|
+
"読むだけの練習です。インベントリはFigmaからの同期で上書きされる生成物なので、手で編集しないでください。",
|
|
333
308
|
].join("\n");
|
|
334
309
|
const TUT_SLACK_PROMPT = [
|
|
335
310
|
"Cortex のチュートリアルを完了したことを、この案件の Slack チャンネルに投稿してください。最後のステップです。",
|
|
336
311
|
"",
|
|
337
|
-
"
|
|
338
|
-
"- 手元の Claude Code(CLI・デスクトップ)なら /mcp コマンドから slack を選んで認可する",
|
|
339
|
-
"- クラウドのセッション(claude.ai/code)なら、セッションのコネクタ設定で Slack を有効にする",
|
|
340
|
-
"- どちらもできない場合は、その旨とつなぎ方を案内して止まってください",
|
|
341
|
-
"",
|
|
342
|
-
"手順:",
|
|
343
|
-
"1. チャット/channels.json を読み、登録されているチャンネル(name / url / description)から投稿先を選ぶ。複数あれば description を見て判断し、迷ったら確認する",
|
|
312
|
+
"1. チャット/channels.json を読んで投稿先のチャンネルを選ぶ(複数あれば description を見て判断し、迷ったらわたしに聞く)",
|
|
344
313
|
"2. 次の雛形で本文を作る({名前} は Cortex/Members/records/ にあるわたしのレコードの表記に合わせる)",
|
|
345
314
|
"",
|
|
346
315
|
"🎉 {名前} さんが Cortex のチュートリアルを完了しました",
|
|
347
316
|
"できるようになったこと: Gold層から案件を把握する・自分の情報を更新する・Backlogに記票する・資料を投入する",
|
|
348
317
|
"使い方の質問はこのチャンネルへどうぞ",
|
|
349
318
|
"",
|
|
350
|
-
"3.
|
|
351
|
-
"4. 承認後に投稿し、投稿したメッセージのリンクを報告する",
|
|
319
|
+
"3. 投稿先と本文をプレビューして承認を得てから投稿し、メッセージのリンクを報告する",
|
|
352
320
|
"",
|
|
353
|
-
"
|
|
354
|
-
"
|
|
321
|
+
"Slack につながっていない場合は、つなぎ方(手元の Claude Code なら /mcp コマンドから slack、クラウドならセッションのコネクタ設定)を案内して止まってください。",
|
|
322
|
+
"売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)。",
|
|
355
323
|
].join("\n");
|
|
356
324
|
const CSS = `
|
|
357
325
|
:root {
|
|
@@ -974,150 +942,86 @@ const CLIENT_JS = `
|
|
|
974
942
|
}
|
|
975
943
|
// Gold型(ディレクトリ名)→ 書き込みプロンプトの対応。決定事項/用語集/メンバー/ルールの4型のみ。
|
|
976
944
|
// レポート等スキルの無いディレクトリは対象外(ボタンを出さない)。
|
|
977
|
-
//
|
|
945
|
+
// プロンプトには規約を書き写さない。各区画の README.md(規約)と template.md(雛形)をAIに読ませ、
|
|
946
|
+
// 中身は利用者に聞き返させる(規約の二重定義を避け、READMEの更新がそのまま効くようにするため)。
|
|
978
947
|
// スキルが使える環境(手元のCLI・デスクトップ等)ではそちらを優先させる旨を冒頭に添える。
|
|
979
948
|
function aiHead(skill) {
|
|
980
|
-
return "(" + skill + "
|
|
949
|
+
return "(" + skill + " スキルが使える環境なら、そのスキルの手順を優先してください。)\\n\\n";
|
|
981
950
|
}
|
|
982
|
-
// 4
|
|
983
|
-
var AI_COMMON =
|
|
984
|
-
""
|
|
985
|
-
"",
|
|
986
|
-
"共通ルール:",
|
|
987
|
-
"- 書き込む前に、作成・更新する内容を提示して承認を得てください",
|
|
988
|
-
"- 同じ対象に複数ファイルを作らないよう、既存レコードとの重複を必ず確認してください",
|
|
989
|
-
"- relations の target にファイルパスは書かず、安定ID(決定ID YYYYMMDD-NNN / term:{代表表記} / rule:{slug} / member:{氏名} / 課題キー / minute:{定例名}:{YYYYMMDD})で張ってください",
|
|
990
|
-
"- 売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)",
|
|
991
|
-
].join("\\n");
|
|
951
|
+
// 4型すべてに付ける共通の規律。READMEに書けない公開範囲の注意だけを1行残す
|
|
952
|
+
var AI_COMMON =
|
|
953
|
+
"\\n\\n売上・単価・工数・人事評価などの内部限定情報は書かないでください(このリポジトリは顧客も閲覧します)。";
|
|
992
954
|
var GOLD_SKILL = {
|
|
993
955
|
"Decisions": {
|
|
994
956
|
skill: "update-decision",
|
|
995
957
|
noun: "決定",
|
|
958
|
+
dir: "Cortex/Decisions",
|
|
996
959
|
add: [
|
|
997
|
-
"
|
|
998
|
-
"",
|
|
999
|
-
"
|
|
1000
|
-
"1. Cortex/Decisions/README.md(フィールド定義・カテゴリー一覧)と Cortex/Decisions/template.md を読む",
|
|
1001
|
-
"2. 既存の records/ を一覧し、同じ決定が記録済みでないかと、決定日の連番の続きを確認する",
|
|
1002
|
-
"3. ファイル名は YYYYMMDD-NNN-決定内容の要約.md(YYYYMMDD=決定日、NNN=同日内の連番)",
|
|
1003
|
-
"4. frontmatter の必須は type: decision / id(YYYYMMDD-NNN) / title / date / sprint(スプリント運用が無ければフェーズ名) / category(ビジネス・技術選定・設計方針・運用ルール・インフラ・デザインから選ぶ) / deciders(Cortex/Members/records/ の正式表記に揃える。名簿に無い人名は「(要確認)」を付ける) / description(1文要約) / references(出典への人間向けリンク)。README 定義以外のフィールドは追加しない",
|
|
1004
|
-
"5. 根拠がある場合は relations に rel: based_on で安定IDを張る(議事録は minute:{定例名}:{YYYYMMDD}、課題は課題キー)",
|
|
1005
|
-
"6. 本文は「# タイトル」「## 背景」(なぜ必要になったか)「## 理由」(なぜその選択をしたか・他案との比較)",
|
|
1006
|
-
"7. 過去の決定を変える内容なら、その記録は書き換えず新しい記録を作り、relations に rel: supersedes で元の決定IDを張る",
|
|
1007
|
-
"8. 確定した決定だけを記録する(検討中・未確定の議論は記録しない)",
|
|
960
|
+
"Cortex/Decisions/README.md と Cortex/Decisions/template.md を読んで記録の規約を把握してから、決定事項を1件記録してください。",
|
|
961
|
+
"何を記録するかは、まずわたしに質問してください。",
|
|
962
|
+
"書き込む前に、作成するファイルの内容を提示して承認を得てください。",
|
|
1008
963
|
].join("\\n"),
|
|
1009
|
-
edit: function (target) {
|
|
964
|
+
edit: function (target, subject) {
|
|
1010
965
|
return [
|
|
1011
|
-
target + "
|
|
1012
|
-
"",
|
|
1013
|
-
"
|
|
1014
|
-
"",
|
|
1015
|
-
"
|
|
1016
|
-
"1. Cortex/Decisions/README.md(フィールド定義・カテゴリー一覧)と対象ファイルを読む",
|
|
1017
|
-
"2. 新しい記録を作る場合は、既存の records/ で連番の続きと重複を確認する",
|
|
1018
|
-
"3. frontmatter の必須は type: decision / id / title / date / sprint / category / deciders(Cortex/Members/records/ の正式表記に揃える) / description / references。README 定義以外のフィールドは追加しない",
|
|
1019
|
-
"4. 本文は「# タイトル」「## 背景」「## 理由」の構成を保つ",
|
|
1020
|
-
"5. あなた(人間)が内容を確認して編集したので、status が draft(AI生成・人間未確認)なら active に上げる。内容を確認せず表記・形式だけ直した場合は draft のままにする",
|
|
966
|
+
target + " を読んでから、" + subject + "を修正してください。",
|
|
967
|
+
"何を直すかは、まずわたしに質問してください。",
|
|
968
|
+
"決定の内容そのものが変わる場合は、この記録を書き換えず、supersedes で新しい記録を作ってください。",
|
|
969
|
+
"あなた(人間)が内容を確認して編集したので、status が draft なら active に上げてください。",
|
|
970
|
+
"書き込む前に、変更内容を提示して承認を得てください。",
|
|
1021
971
|
].join("\\n");
|
|
1022
972
|
},
|
|
1023
973
|
},
|
|
1024
974
|
"Glossary": {
|
|
1025
975
|
skill: "update-glossary",
|
|
1026
976
|
noun: "用語",
|
|
977
|
+
dir: "Cortex/Glossary",
|
|
1027
978
|
add: [
|
|
1028
|
-
"
|
|
1029
|
-
"",
|
|
1030
|
-
"
|
|
1031
|
-
"1. Cortex/Glossary/README.md(スキーマ・除外用語リスト)と Cortex/Glossary/template.md を読む",
|
|
1032
|
-
"2. 既存 records/ の title と synonyms を確認する。既存用語の表記揺れなら新規ファイルを作らず、その用語の synonyms に追記する。除外用語リストに載っている語は登録しない",
|
|
1033
|
-
"3. ファイル名は records/{代表表記}.md、id は term:{代表表記}",
|
|
1034
|
-
"4. frontmatter の必須は type: term / id / title / description(1文要約) / scope(project=案件固有 | organization=全社共通) / status / date(登録日)。任意は synonyms(表記揺れ)・source(この案件での出典)・references。README 定義以外のフィールドは追加しない",
|
|
1035
|
-
"5. 案件固有語は社内の情報源(議事録・課題・資料)の記述だけを根拠に定義する(Web検索せず references も付けない)。Figma・OIDC のような一般公開のサービス・技術・規格は、Web で公式ドキュメント等の一次情報を確認してから定義し、そのURLを references に入れる。推測で書かない",
|
|
1036
|
-
"6. 定義を人間と確認できた場合のみ status: active。確証が持てなければ status: draft(AI生成・人間未確認の印)にする",
|
|
1037
|
-
"7. 本文にはこの案件における意味を1〜数段落で具体的に書く(一般的な意味に加え、この案件で特殊な使われ方があれば補足する)",
|
|
979
|
+
"Cortex/Glossary/README.md と Cortex/Glossary/template.md を読んで登録の規約を把握してから、用語を1件登録してください。",
|
|
980
|
+
"何を登録するかは、まずわたしに質問してください。",
|
|
981
|
+
"書き込む前に、作成するファイルの内容を提示して承認を得てください。",
|
|
1038
982
|
].join("\\n"),
|
|
1039
|
-
edit: function (target) {
|
|
983
|
+
edit: function (target, subject) {
|
|
1040
984
|
return [
|
|
1041
|
-
target + "
|
|
1042
|
-
"",
|
|
1043
|
-
"
|
|
1044
|
-
"
|
|
1045
|
-
"- 新しい表記揺れは新規ファイルを作らず synonyms に追記します",
|
|
1046
|
-
"- 定義を人間と確認できたら status: draft を active に上げます",
|
|
1047
|
-
"- 使われなくなった用語は削除せず status: superseded にします",
|
|
1048
|
-
"",
|
|
1049
|
-
"手順:",
|
|
1050
|
-
"1. Cortex/Glossary/README.md(スキーマ)と対象ファイルを読む",
|
|
1051
|
-
"2. frontmatter の必須は type: term / id(term:{代表表記}) / title / description / scope / status / date。README 定義以外のフィールドは追加しない",
|
|
1052
|
-
"3. 一般公開のサービス・技術・規格は Web で公式ドキュメント等の一次情報を確認してから定義を直し、references にそのURLを入れる。案件固有語は社内の情報源だけを根拠にし、推測で書かない",
|
|
1053
|
-
"4. あなた(人間)が内容を確認して編集したので、status が draft(AI生成・人間未確認)なら active に上げる。内容を確認せず表記・形式だけ直した場合は draft のままにする",
|
|
985
|
+
target + " を読んでから、" + subject + "を修正してください。",
|
|
986
|
+
"何を直すかは、まずわたしに質問してください。",
|
|
987
|
+
"あなた(人間)が内容を確認して編集したので、status が draft なら active に上げてください。",
|
|
988
|
+
"書き込む前に、変更内容を提示して承認を得てください。",
|
|
1054
989
|
].join("\\n");
|
|
1055
990
|
},
|
|
1056
991
|
},
|
|
1057
992
|
"Members": {
|
|
1058
993
|
skill: "update-member",
|
|
1059
994
|
noun: "メンバー",
|
|
995
|
+
dir: "Cortex/Members",
|
|
1060
996
|
add: [
|
|
1061
|
-
"
|
|
1062
|
-
"",
|
|
1063
|
-
"
|
|
1064
|
-
"1. Cortex/Members/README.md(スキーマ)と Cortex/Members/template.md を読む",
|
|
1065
|
-
"2. 既存 records/ の title・aliases・side を確認する。既存メンバーの表記揺れなら新規ファイルを作らず、その人の aliases に追記する(同一人物に複数ファイルを作らない)",
|
|
1066
|
-
"3. ファイル名は records/{氏名(スペース無し)}.md、id は member:{氏名(スペース無し)}",
|
|
1067
|
-
"4. frontmatter の必須は type: member / id / title(氏名の正式表記。スペースを含んでよい) / description(何者かの1文) / status(active=在籍 | inactive=離任 | draft=AI生成・人間未確認)。任意は yomi・aliases・org・side(cm=開発側 | client=顧客 | vendor=ベンダー)・role・email。README 定義以外のフィールドは追加しない",
|
|
1068
|
-
"5. 氏名・所属・side を推測で確定させない。確証が無い項目は空にし、確認が取れていないレコードは status: draft のままにする",
|
|
1069
|
-
"6. 本文にも何者かを1〜2文書く(Viewer の個別ページに表示されるため空にしない)",
|
|
1070
|
-
"7. 名簿に書くのは氏名・所属・役割・表記揺れだけ。人の評価・人事・単価・工数は書かない",
|
|
997
|
+
"Cortex/Members/README.md と Cortex/Members/template.md を読んで登録の規約を把握してから、メンバーを1人登録してください。",
|
|
998
|
+
"誰を登録するかは、まずわたしに質問してください。",
|
|
999
|
+
"書き込む前に、作成するファイルの内容を提示して承認を得てください。",
|
|
1071
1000
|
].join("\\n"),
|
|
1072
|
-
edit: function (target) {
|
|
1001
|
+
edit: function (target, subject) {
|
|
1073
1002
|
return [
|
|
1074
|
-
target + "
|
|
1075
|
-
"",
|
|
1076
|
-
"
|
|
1077
|
-
"
|
|
1078
|
-
"- 新しい表記揺れ(文字起こしの誤変換・呼称)は新規ファイルを作らず aliases に追記します",
|
|
1079
|
-
"- 本人やPMに確認が取れたら status: draft を active に上げます。確証が無い項目は推測で埋めず空のままにします",
|
|
1080
|
-
"- 離任しても削除せず status: inactive にします(過去の議事録・決定の人名正規化の根拠として残すため)",
|
|
1081
|
-
"",
|
|
1082
|
-
"手順:",
|
|
1083
|
-
"1. Cortex/Members/README.md(スキーマ)と対象ファイルを読む",
|
|
1084
|
-
"2. frontmatter の必須は type: member / id(member:{氏名(スペース無し)}) / title / description / status。任意は yomi・aliases・org・side(cm | client | vendor)・role・email。README 定義以外のフィールドは追加しない",
|
|
1085
|
-
"3. 名簿に書くのは氏名・所属・役割・表記揺れだけ。人の評価・人事・単価・工数は書かない",
|
|
1086
|
-
"4. あなた(人間)が内容を確認して編集したので、status が draft(AI生成・人間未確認)なら active に上げる。内容を確認せず表記・形式だけ直した場合は draft のままにする",
|
|
1003
|
+
target + " を読んでから、" + subject + "を修正してください。",
|
|
1004
|
+
"何を直すかは、まずわたしに質問してください。",
|
|
1005
|
+
"あなた(人間)が内容を確認して編集したので、status が draft なら active に上げてください。",
|
|
1006
|
+
"書き込む前に、変更内容を提示して承認を得てください。",
|
|
1087
1007
|
].join("\\n");
|
|
1088
1008
|
},
|
|
1089
1009
|
},
|
|
1090
1010
|
"Rules": {
|
|
1091
1011
|
skill: "update-rule",
|
|
1092
1012
|
noun: "ルール",
|
|
1013
|
+
dir: "Cortex/Rules",
|
|
1093
1014
|
add: [
|
|
1094
|
-
"
|
|
1095
|
-
"",
|
|
1096
|
-
"
|
|
1097
|
-
"1. Cortex/Rules/README.md(スキーマ・除外ルールリスト)と Cortex/Rules/template.md を読む",
|
|
1098
|
-
"2. Rule と Decision を判別する。Rule は「本番リリースは金曜禁止」のように今も効き続ける約束事だけ。一回きりの決定・単発のTODO・期限付きの依頼は Rule にしない(それは Cortex/Decisions/ の担当)",
|
|
1099
|
-
"3. 既存 records/ の title を確認して重複を避ける。README の除外ルールに載っている制約は起票しない(除外リストは読むだけで編集しない)",
|
|
1100
|
-
"4. ファイル名は records/{slug}.md、id は rule:{slug}(例: rule:本番リリース-金曜禁止)",
|
|
1101
|
-
"5. frontmatter の必須は type: rule / id / title(制約の1行表現) / description(1文要約) / status(draft=AI生成・人間未確認 | active=確認済み)。README 定義以外のフィールドは追加しない",
|
|
1102
|
-
"6. status は原則 draft。対話でユーザー本人が制約の内容に合意している場合だけ active にしてよい",
|
|
1103
|
-
"7. 元になった決定があれば relations に rel: derived_from / target: 決定ID(YYYYMMDD-NNN)を、議事録・課題が根拠なら rel: based_on で安定IDを張る",
|
|
1104
|
-
"8. 本文は「## 制約」「## 適用範囲」「## 違反するとどうなるか」「## 出典」で構成する",
|
|
1015
|
+
"Cortex/Rules/README.md と Cortex/Rules/template.md を読んで登録の規約を把握してから、ルール(案件で継続的に守る制約)を1件登録してください。",
|
|
1016
|
+
"何を登録するかは、まずわたしに質問してください。",
|
|
1017
|
+
"書き込む前に、作成するファイルの内容を提示して承認を得てください。",
|
|
1105
1018
|
].join("\\n"),
|
|
1106
|
-
edit: function (target) {
|
|
1019
|
+
edit: function (target, subject) {
|
|
1107
1020
|
return [
|
|
1108
|
-
target + "
|
|
1109
|
-
"",
|
|
1110
|
-
"
|
|
1111
|
-
"
|
|
1112
|
-
"- 内容を人間と確認できたら status: draft を active に上げます(本人の合意が無いものを勝手に active にしない)",
|
|
1113
|
-
"- 効かなくなったルールは削除せず、本文に失効を追記して元の決定から履歴をたどれるようにします",
|
|
1114
|
-
"- 継続的な制約でなくなる内容(一回きりの決定)は Rule ではなく Cortex/Decisions/ の担当です",
|
|
1115
|
-
"",
|
|
1116
|
-
"手順:",
|
|
1117
|
-
"1. Cortex/Rules/README.md(スキーマ・除外ルール)と対象ファイルを読む",
|
|
1118
|
-
"2. frontmatter の必須は type: rule / id(rule:{slug}) / title / description / status。README 定義以外のフィールドは追加しない",
|
|
1119
|
-
"3. 本文は「## 制約」「## 適用範囲」「## 違反するとどうなるか」「## 出典」の構成を保つ",
|
|
1120
|
-
"4. あなた(人間)が内容を確認して編集したので、status が draft(AI生成・人間未確認)なら active に上げる。内容を確認せず表記・形式だけ直した場合は draft のままにする",
|
|
1021
|
+
target + " を読んでから、" + subject + "を修正してください。",
|
|
1022
|
+
"何を直すかは、まずわたしに質問してください。",
|
|
1023
|
+
"あなた(人間)が内容を確認して編集したので、status が draft なら active に上げてください。",
|
|
1024
|
+
"書き込む前に、変更内容を提示して承認を得てください。",
|
|
1121
1025
|
].join("\\n");
|
|
1122
1026
|
},
|
|
1123
1027
|
},
|
|
@@ -1141,10 +1045,10 @@ const CLIENT_JS = `
|
|
|
1141
1045
|
var g = goldSkill(sectionName);
|
|
1142
1046
|
if (!g) return null;
|
|
1143
1047
|
var pathRef = repoPathOf(rec);
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
var prompt = aiHead(g.skill) + g.edit(target) + AI_COMMON;
|
|
1048
|
+
// target=AIに読ませるファイル(対象レコード+規約のREADME)、subject=直す対象の呼び名
|
|
1049
|
+
var target = (pathRef ? pathRef + " と " : "") + g.dir + "/README.md";
|
|
1050
|
+
var subject = "この" + g.noun + "「" + title + "」" + (pathRef ? "" : "(" + rec.id + ")");
|
|
1051
|
+
var prompt = aiHead(g.skill) + g.edit(target, subject) + AI_COMMON;
|
|
1148
1052
|
return el("a", { class: "ai-edit-btn", href: codeUrl(prompt), target: "_blank", rel: "noopener", text: "AIで編集" });
|
|
1149
1053
|
}
|
|
1150
1054
|
// 本文HTMLは bodies/<i>.html に外出しされている。詳細表示時にfetchして埋める(キャッシュ・失敗時フォールバック付き)
|
package/package.json
CHANGED