@ripla/godd-mcp 1.0.0 → 1.0.2-canary.1

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.
Files changed (32) hide show
  1. package/README.md +2 -2
  2. package/dist/godd.cjs +116 -111
  3. package/dist/godd.js +114 -17
  4. package/dist/index.js +1 -1
  5. package/package.json +1 -1
  6. package/templates/agents/architect.hbs +4 -4
  7. package/templates/agents/auto-documenter.hbs +4 -4
  8. package/templates/agents/backend-developer.hbs +3 -3
  9. package/templates/agents/code-reviewer.hbs +2 -2
  10. package/templates/agents/database-developer.hbs +4 -4
  11. package/templates/agents/debug-specialist.hbs +2 -2
  12. package/templates/agents/environment-setup.hbs +1 -1
  13. package/templates/agents/frontend-developer.hbs +5 -5
  14. package/templates/agents/integration-qa.hbs +1 -1
  15. package/templates/agents/pr-writer.hbs +1 -1
  16. package/templates/agents/quality-lead.hbs +3 -3
  17. package/templates/agents/requirements-analyst.hbs +2 -2
  18. package/templates/agents/security-analyst.hbs +1 -1
  19. package/templates/agents/ssot-updater.hbs +3 -3
  20. package/templates/agents/technical-writer.hbs +3 -3
  21. package/templates/agents/unit-test-engineer.hbs +1 -1
  22. package/templates/prompts/agent-dev-workflow.hbs +1 -1
  23. package/templates/prompts/docs-init.hbs +41 -59
  24. package/templates/prompts/docs-update.hbs +10 -10
  25. package/templates/prompts/notes-deploy.hbs +2 -1
  26. package/templates/prompts/pr-create.hbs +2 -2
  27. package/templates/prompts/push-execute.hbs +2 -2
  28. package/templates/prompts/push.hbs +1 -1
  29. package/templates/prompts/requirements-to-business-flow.hbs +1 -1
  30. package/templates/prompts/specification-to-tickets.hbs +1 -1
  31. package/templates/prompts/submit.hbs +2 -2
  32. package/templates/prompts/sync.hbs +1 -1
package/dist/godd.js CHANGED
@@ -32431,7 +32431,7 @@ var init_spec_to_tickets = __esm({
32431
32431
  init_zod();
32432
32432
  init_base();
32433
32433
  specToTicketsToolName = "godd_spec_to_tickets";
32434
- specToTicketsToolDescription = "\u4ED5\u69D8\u2192\u30C1\u30B1\u30C3\u30C8\u5909\u63DB\u3002Spec\uFF08docs/009_spec/\uFF09\u304B\u3089\u5B9F\u88C5\u53EF\u80FD\u306A\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u3001\u5F71\u97FF\u30EC\u30A4\u30E4\u30FC\u30FB\u30C6\u30B9\u30C8\u89B3\u70B9\u30FB\u30EA\u30B9\u30AF\u3092\u4ED8\u4E0E\u3057\u307E\u3059\u3002";
32434
+ specToTicketsToolDescription = "\u4ED5\u69D8\u2192\u30C1\u30B1\u30C3\u30C8\u5909\u63DB\u3002Spec\uFF08docs/003_requirements/spec/\uFF09\u304B\u3089\u5B9F\u88C5\u53EF\u80FD\u306A\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u3001\u5F71\u97FF\u30EC\u30A4\u30E4\u30FC\u30FB\u30C6\u30B9\u30C8\u89B3\u70B9\u30FB\u30EA\u30B9\u30AF\u3092\u4ED8\u4E0E\u3057\u307E\u3059\u3002";
32435
32435
  specToTicketsToolInputSchema = external_exports.object({
32436
32436
  specification: external_exports.string().max(2e5).optional().describe("\u5BFE\u8C61Spec\uFF08API/UI/DB/Feature/Usecase/Error Codes\uFF09"),
32437
32437
  project_root: external_exports.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")
@@ -33896,7 +33896,10 @@ var init_install2 = __esm({
33896
33896
  var notes_infra_exports = {};
33897
33897
  __export(notes_infra_exports, {
33898
33898
  PROVIDER_LABELS: () => PROVIDER_LABELS,
33899
- runNotesInfra: () => runNotesInfra
33899
+ findNotesSourceDirs: () => findNotesSourceDirs,
33900
+ runNotesInfra: () => runNotesInfra,
33901
+ scaffoldNotesApplicationSources: () => scaffoldNotesApplicationSources,
33902
+ shouldExcludeNotesSourceEntry: () => shouldExcludeNotesSourceEntry
33900
33903
  });
33901
33904
  import * as readline3 from "node:readline";
33902
33905
  import {
@@ -33905,7 +33908,9 @@ import {
33905
33908
  writeFileSync as writeFileSync4,
33906
33909
  readFileSync as readFileSync10,
33907
33910
  readdirSync as readdirSync3,
33908
- chmodSync as chmodSync2
33911
+ chmodSync as chmodSync2,
33912
+ copyFileSync as copyFileSync2,
33913
+ statSync as statSync2
33909
33914
  } from "node:fs";
33910
33915
  import { join as join9, dirname as dirname3, resolve as resolve3 } from "node:path";
33911
33916
  import { fileURLToPath as fileURLToPath3 } from "node:url";
@@ -33937,6 +33942,78 @@ function findTemplatesDir(provider) {
33937
33942
  }
33938
33943
  return null;
33939
33944
  }
33945
+ function shouldExcludeNotesSourceEntry(entry, extraExclude) {
33946
+ if (entry === ".env") return true;
33947
+ if (entry.startsWith(".env.") && entry !== ".env.example") return true;
33948
+ if (entry.endsWith(".pyc") || entry.endsWith(".tsbuildinfo")) return true;
33949
+ return COMMON_NOTES_SOURCE_EXCLUDE.has(entry) || extraExclude.has(entry);
33950
+ }
33951
+ function hasNotesSourceMarkers(apiDir, appDir) {
33952
+ return existsSync10(join9(apiDir, "app", "main.py")) && existsSync10(join9(appDir, "package.json")) && existsSync10(join9(appDir, "src"));
33953
+ }
33954
+ function findNotesSourceDirs() {
33955
+ const pkgRoot = getPackageRoot();
33956
+ const candidates = [
33957
+ resolve3(pkgRoot, ".."),
33958
+ pkgRoot,
33959
+ dirname3(process.execPath),
33960
+ process.cwd()
33961
+ ];
33962
+ for (const root of candidates) {
33963
+ const apiDir = join9(root, "notes-api");
33964
+ const appDir = join9(root, "notes-app");
33965
+ if (existsSync10(apiDir) && existsSync10(appDir) && hasNotesSourceMarkers(apiDir, appDir)) {
33966
+ return { apiDir, appDir };
33967
+ }
33968
+ }
33969
+ return null;
33970
+ }
33971
+ function copyDirRecursive(src, dest, exclude) {
33972
+ mkdirSync4(dest, { recursive: true });
33973
+ for (const entry of readdirSync3(src)) {
33974
+ if (shouldExcludeNotesSourceEntry(entry, exclude)) continue;
33975
+ const srcPath = join9(src, entry);
33976
+ const destPath = join9(dest, entry);
33977
+ if (statSync2(srcPath).isDirectory()) {
33978
+ copyDirRecursive(srcPath, destPath, exclude);
33979
+ } else {
33980
+ copyFileSync2(srcPath, destPath);
33981
+ }
33982
+ }
33983
+ }
33984
+ function scaffoldNotesApplicationSources(outputDir) {
33985
+ const notesDirs = findNotesSourceDirs();
33986
+ if (!notesDirs) {
33987
+ console.warn(
33988
+ "\n \u26A0 notes-api / notes-app \u306E\u540C\u68B1\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u305F\u3081\u3001\u30A2\u30D7\u30EA scaffold \u3092\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3057\u305F\u3002"
33989
+ );
33990
+ return [];
33991
+ }
33992
+ const scaffolded = [];
33993
+ const targets = [
33994
+ {
33995
+ label: "notes-api",
33996
+ src: notesDirs.apiDir,
33997
+ dest: join9(outputDir, "notes-api"),
33998
+ exclude: NOTES_API_SOURCE_EXCLUDE
33999
+ },
34000
+ {
34001
+ label: "notes-app",
34002
+ src: notesDirs.appDir,
34003
+ dest: join9(outputDir, "notes-app"),
34004
+ exclude: NOTES_APP_SOURCE_EXCLUDE
34005
+ }
34006
+ ];
34007
+ console.log(`
34008
+ [\u30A2\u30D7\u30EA] Notes \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30BD\u30FC\u30B9\u3092\u540C\u671F: ${outputDir}`);
34009
+ for (const target of targets) {
34010
+ const action = existsSync10(target.dest) ? "\u66F4\u65B0" : "\u914D\u7F6E";
34011
+ copyDirRecursive(target.src, target.dest, target.exclude);
34012
+ scaffolded.push(target.label);
34013
+ console.log(` \u2713 ${target.label}/ \u3092${action}`);
34014
+ }
34015
+ return scaffolded;
34016
+ }
33940
34017
  function loadProjectConfig(dir) {
33941
34018
  const configPath = join9(dir, CONFIG_FILE_NAME);
33942
34019
  if (!existsSync10(configPath)) return null;
@@ -34169,7 +34246,7 @@ async function runInfraWizard(rl2) {
34169
34246
  console.log(`
34170
34247
  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
34171
34248
  \u2551 ripla Notes \u30A4\u30F3\u30D5\u30E9\u69CB\u7BC9\u30A6\u30A3\u30B6\u30FC\u30C9 \u2551
34172
- \u2551 Terraform + GitHub Actions \u81EA\u52D5\u751F\u6210 \u2551
34249
+ \u2551 \u30A2\u30D7\u30EA + Terraform + GitHub Actions \u81EA\u52D5\u751F\u6210 \u2551
34173
34250
  \u2551 \u2551
34174
34251
  \u2551 \u5BFE\u5FDC\u30D7\u30ED\u30D0\u30A4\u30C0: \u2551
34175
34252
  \u2551 AWS / GCP / Azure / Vercel\xD7Railway \u2551
@@ -34268,6 +34345,7 @@ function generateFiles(config2) {
34268
34345
  } else {
34269
34346
  generateGenericFiles(terraformDir, ghaDir, config2, context);
34270
34347
  }
34348
+ scaffoldNotesApplicationSources(config2.outputDir);
34271
34349
  saveProjectConfig(config2);
34272
34350
  console.log(
34273
34351
  `
@@ -34446,6 +34524,9 @@ function printNextSteps(config2) {
34446
34524
  \u2551 - admin-credentials \u2551
34447
34525
  \u2551 - github-token (\u4EFB\u610F) \u2551
34448
34526
  \u2551 \u2551
34527
+ \u2551 5. \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u30C7\u30D7\u30ED\u30A4 \u2551
34528
+ \u2551 godd notes deploy -y \u2551
34529
+ \u2551 \u2551
34449
34530
  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
34450
34531
  `);
34451
34532
  break;
@@ -34526,7 +34607,7 @@ function printNextSteps(config2) {
34526
34607
  async function runNotesInfra(args) {
34527
34608
  if (args.includes("--help") || args.includes("-h")) {
34528
34609
  console.log(`
34529
- GoDD Notes Infra \u2014 \u30DE\u30EB\u30C1\u30AF\u30E9\u30A6\u30C9 \u30A4\u30F3\u30D5\u30E9\u81EA\u52D5\u751F\u6210
34610
+ GoDD Notes Infra \u2014 \u30A2\u30D7\u30EA + \u30DE\u30EB\u30C1\u30AF\u30E9\u30A6\u30C9 \u30A4\u30F3\u30D5\u30E9\u81EA\u52D5\u751F\u6210
34530
34611
 
34531
34612
  Usage: godd notes infra [options]
34532
34613
 
@@ -34560,7 +34641,7 @@ Options:
34560
34641
  rl2.close();
34561
34642
  }
34562
34643
  }
34563
- var import_handlebars2, PROVIDER_LABELS, CONFIG_FILE_NAME;
34644
+ var import_handlebars2, PROVIDER_LABELS, COMMON_NOTES_SOURCE_EXCLUDE, NOTES_APP_SOURCE_EXCLUDE, NOTES_API_SOURCE_EXCLUDE, CONFIG_FILE_NAME;
34564
34645
  var init_notes_infra = __esm({
34565
34646
  "src/cli/notes-infra.ts"() {
34566
34647
  "use strict";
@@ -34572,6 +34653,22 @@ var init_notes_infra = __esm({
34572
34653
  azure: "Azure (Container Apps + Blob Storage + PostgreSQL)",
34573
34654
  "vercel-railway": "Vercel \xD7 Railway (PaaS)"
34574
34655
  };
34656
+ COMMON_NOTES_SOURCE_EXCLUDE = /* @__PURE__ */ new Set([
34657
+ ".git",
34658
+ "coverage",
34659
+ "dist",
34660
+ "node_modules"
34661
+ ]);
34662
+ NOTES_APP_SOURCE_EXCLUDE = /* @__PURE__ */ new Set([
34663
+ "playwright-report",
34664
+ "test-results"
34665
+ ]);
34666
+ NOTES_API_SOURCE_EXCLUDE = /* @__PURE__ */ new Set([
34667
+ ".pytest_cache",
34668
+ ".ruff_cache",
34669
+ ".venv",
34670
+ "__pycache__"
34671
+ ]);
34575
34672
  CONFIG_FILE_NAME = ".godd-notes-infra.json";
34576
34673
  }
34577
34674
  });
@@ -34597,9 +34694,9 @@ import {
34597
34694
  mkdirSync as mkdirSync5,
34598
34695
  writeFileSync as writeFileSync5,
34599
34696
  readFileSync as readFileSync11,
34600
- copyFileSync as copyFileSync2,
34697
+ copyFileSync as copyFileSync3,
34601
34698
  readdirSync as readdirSync4,
34602
- statSync as statSync2
34699
+ statSync as statSync3
34603
34700
  } from "node:fs";
34604
34701
  import { join as join10, dirname as dirname4, resolve as resolve4 } from "node:path";
34605
34702
  import * as childProcess from "node:child_process";
@@ -34646,17 +34743,17 @@ function findNotesDir() {
34646
34743
  }
34647
34744
  return null;
34648
34745
  }
34649
- function copyDirRecursive(src, dest) {
34746
+ function copyDirRecursive2(src, dest) {
34650
34747
  mkdirSync5(dest, { recursive: true });
34651
34748
  for (const entry of readdirSync4(src)) {
34652
34749
  if (COPY_EXCLUDE.has(entry)) continue;
34653
34750
  if (entry.endsWith(".pyc") || entry.endsWith(".tsbuildinfo")) continue;
34654
34751
  const srcPath = join10(src, entry);
34655
34752
  const destPath = join10(dest, entry);
34656
- if (statSync2(srcPath).isDirectory()) {
34657
- copyDirRecursive(srcPath, destPath);
34753
+ if (statSync3(srcPath).isDirectory()) {
34754
+ copyDirRecursive2(srcPath, destPath);
34658
34755
  } else {
34659
- copyFileSync2(srcPath, destPath);
34756
+ copyFileSync3(srcPath, destPath);
34660
34757
  }
34661
34758
  }
34662
34759
  }
@@ -34961,9 +35058,9 @@ async function deploy(config2) {
34961
35058
  [1/5] \u30C7\u30D7\u30ED\u30A4\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u6E96\u5099: ${config2.deployDir}`);
34962
35059
  mkdirSync5(config2.deployDir, { recursive: true });
34963
35060
  console.log("[2/5] notes-api \u3092\u30B3\u30D4\u30FC...");
34964
- copyDirRecursive(apiDir, join10(config2.deployDir, "notes-api"));
35061
+ copyDirRecursive2(apiDir, join10(config2.deployDir, "notes-api"));
34965
35062
  console.log("[3/5] notes-app \u3092\u30B3\u30D4\u30FC...");
34966
- copyDirRecursive(appDir, join10(config2.deployDir, "notes-app"));
35063
+ copyDirRecursive2(appDir, join10(config2.deployDir, "notes-app"));
34967
35064
  console.log("[4/5] docker-compose.yml \u3068 .env \u3092\u751F\u6210...");
34968
35065
  const composeContent = readFileSync11(composeTemplate, "utf-8");
34969
35066
  writeFileSync5(join10(config2.deployDir, "docker-compose.yml"), composeContent, "utf-8");
@@ -35195,7 +35292,7 @@ Usage: godd notes <command> [options]
35195
35292
  Commands:
35196
35293
  compose \u30ED\u30FC\u30AB\u30EB Docker Compose \u3067\u30C7\u30D7\u30ED\u30A4
35197
35294
  deploy AWS \u306B\u76F4\u63A5\u30C7\u30D7\u30ED\u30A4\uFF08ECR push \u2192 ECS \u66F4\u65B0 \u2192 S3 sync \u2192 CloudFront \u7121\u52B9\u5316\uFF09
35198
- infra \u30AF\u30E9\u30A6\u30C9\u30A4\u30F3\u30D5\u30E9\u3092 Terraform + GitHub Actions \u3067\u69CB\u7BC9
35295
+ infra Notes \u30A2\u30D7\u30EA\u96DB\u5F62\u3068\u30AF\u30E9\u30A6\u30C9\u30A4\u30F3\u30D5\u30E9\u3092 Terraform + GitHub Actions \u3067\u69CB\u7BC9
35199
35296
  status \u30C7\u30D7\u30ED\u30A4\u72B6\u614B\u30FB\u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\u3092\u78BA\u8A8D
35200
35297
 
35201
35298
  compose \u30AA\u30D7\u30B7\u30E7\u30F3:
@@ -35222,7 +35319,7 @@ Examples:
35222
35319
  godd notes compose --config config.json \u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30C7\u30D7\u30ED\u30A4
35223
35320
  godd notes deploy AWS \u306B\u30C7\u30D7\u30ED\u30A4\uFF08\u5BFE\u8A71\u5F62\u5F0F\u3067\u78BA\u8A8D\uFF09
35224
35321
  godd notes deploy -y \u78BA\u8A8D\u306A\u3057\u3067 AWS \u306B\u30C7\u30D7\u30ED\u30A4
35225
- godd notes infra Terraform + CI/CD \u30D5\u30A1\u30A4\u30EB\u751F\u6210
35322
+ godd notes infra \u30A2\u30D7\u30EA\u96DB\u5F62 + Terraform + CI/CD \u30D5\u30A1\u30A4\u30EB\u751F\u6210
35226
35323
  godd notes status \u30C7\u30D7\u30ED\u30A4\u72B6\u614B\u3092\u78BA\u8A8D
35227
35324
 
35228
35325
  AI \u9023\u643A:
@@ -35459,7 +35556,7 @@ Examples:
35459
35556
  godd init \u73FE\u5728\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7
35460
35557
  godd notes compose \u30ED\u30FC\u30AB\u30EB Docker Compose \u3067\u30C7\u30D7\u30ED\u30A4
35461
35558
  godd notes deploy AWS \u306B\u30C7\u30D7\u30ED\u30A4\uFF08ECR/ECS/S3/CloudFront\uFF09
35462
- godd notes infra \u30AF\u30E9\u30A6\u30C9\u30A4\u30F3\u30D5\u30E9\u3092\u5BFE\u8A71\u5F62\u5F0F\u3067\u69CB\u7BC9 (AWS/GCP/Azure/Vercel\xD7Railway)
35559
+ godd notes infra Notes \u30A2\u30D7\u30EA\u96DB\u5F62\u3068\u30AF\u30E9\u30A6\u30C9\u30A4\u30F3\u30D5\u30E9\u3092\u5BFE\u8A71\u5F62\u5F0F\u3067\u69CB\u7BC9
35463
35560
  godd version \u30D0\u30FC\u30B8\u30E7\u30F3\u78BA\u8A8D
35464
35561
  `);
35465
35562
  }
package/dist/index.js CHANGED
@@ -197,7 +197,7 @@ ${t.report_type}`),j(e,"analyze-report",r.join(`
197
197
 
198
198
  `),t.project_root)}var kS="godd_req_to_flow",wS="\u8981\u6C42\u2192\u30D3\u30B8\u30CD\u30B9\u30D5\u30ED\u30FC\u5909\u63DB\u3002\u81EA\u7136\u8A00\u8A9E\u306E\u8981\u6C42\u304B\u3089As-Is/To-Be\u30D5\u30ED\u30FC\u3068\u30E6\u30FC\u30B9\u30B1\u30FC\u30B9\u3092\u751F\u6210\u3057\u307E\u3059\u3002",SS=m.object({requirements:m.string().max(2e5).optional().describe("\u8981\u6C42\u5185\u5BB9\uFF08\u81EA\u7136\u8A00\u8A9E\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function TS(e,t){return j(e,"requirements-to-business-flow",`## \u8981\u6C42
199
199
  ${t.requirements??"(Chat \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u5224\u65AD)"}`,t.project_root)}var $S="godd_req_to_tickets",PS="\u8981\u6C42\u2192\u30C1\u30B1\u30C3\u30C8\u5206\u89E3\u3002\u8981\u6C42\u3092\u5B9F\u88C5\u30BF\u30B9\u30AF\uFF08\u30C1\u30B1\u30C3\u30C8\uFF09\u306B\u5206\u89E3\u3057\u3001\u4F9D\u5B58\u95A2\u4FC2\u3068\u691C\u8A3C\u65B9\u6CD5\u3092\u542B\u3081\u3066\u4E00\u89A7\u5316\u3057\u307E\u3059\u3002",ES=m.object({requirements:m.string().max(2e5).optional().describe("\u8981\u6C42\u5185\u5BB9\uFF08\u81EA\u7136\u8A00\u8A9E\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function zS(e,t){return j(e,"requirements-to-tickets",`## \u8981\u6C42
200
- ${t.requirements??"(Chat \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u5224\u65AD)"}`,t.project_root)}var CS="godd_spec_to_tickets",IS="\u4ED5\u69D8\u2192\u30C1\u30B1\u30C3\u30C8\u5909\u63DB\u3002Spec\uFF08docs/009_spec/\uFF09\u304B\u3089\u5B9F\u88C5\u53EF\u80FD\u306A\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u3001\u5F71\u97FF\u30EC\u30A4\u30E4\u30FC\u30FB\u30C6\u30B9\u30C8\u89B3\u70B9\u30FB\u30EA\u30B9\u30AF\u3092\u4ED8\u4E0E\u3057\u307E\u3059\u3002",RS=m.object({specification:m.string().max(2e5).optional().describe("\u5BFE\u8C61Spec\uFF08API/UI/DB/Feature/Usecase/Error Codes\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function AS(e,t){return j(e,"specification-to-tickets",`## \u5BFE\u8C61Spec
200
+ ${t.requirements??"(Chat \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u5224\u65AD)"}`,t.project_root)}var CS="godd_spec_to_tickets",IS="\u4ED5\u69D8\u2192\u30C1\u30B1\u30C3\u30C8\u5909\u63DB\u3002Spec\uFF08docs/003_requirements/spec/\uFF09\u304B\u3089\u5B9F\u88C5\u53EF\u80FD\u306A\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u3001\u5F71\u97FF\u30EC\u30A4\u30E4\u30FC\u30FB\u30C6\u30B9\u30C8\u89B3\u70B9\u30FB\u30EA\u30B9\u30AF\u3092\u4ED8\u4E0E\u3057\u307E\u3059\u3002",RS=m.object({specification:m.string().max(2e5).optional().describe("\u5BFE\u8C61Spec\uFF08API/UI/DB/Feature/Usecase/Error Codes\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function AS(e,t){return j(e,"specification-to-tickets",`## \u5BFE\u8C61Spec
201
201
  ${t.specification??"(Chat \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u5224\u65AD)"}`,t.project_root)}var OS="godd_install",NS="\u30C4\u30FC\u30EB/MCP\u30B5\u30FC\u30D0\u30FC\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3002\u6307\u5B9A\u3055\u308C\u305F\u30C4\u30FC\u30EB\u306E\u74B0\u5883\u306B\u9069\u3057\u305F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u624B\u9806\u30FB\u8A2D\u5B9A\u30FB\u758E\u901A\u78BA\u8A8D\u3092\u6848\u5185\u3057\u307E\u3059\u3002",jS=m.object({target:m.string().max(1e3).describe("\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5BFE\u8C61\u306E\u30C4\u30FC\u30EB/MCP\u540D\uFF08\u4F8B: context7, chrome-devtools-mcp, markitdown-mcp, mcp-ocr, serena, vibe-odf-read-mcp\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function MS(e,t){return j(e,"install",`## \u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u5BFE\u8C61
202
202
  ${t.target}`,t.project_root)}var DS="godd_docs_init",LS="\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B docs/ \u30D5\u30A9\u30EB\u30C0\u69CB\u9020\u3092\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304B\u3089\u751F\u6210\u3057\u307E\u3059\u3002ripla Notes \u3067\u95B2\u89A7\u30FB\u7DE8\u96C6\u53EF\u80FD\u306A MD/CSV/drawio \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u521D\u671F\u69CB\u9020\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002",ZS=m.object({project_name:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D"),roles:m.array(m.string().max(1e3)).optional().describe("\u30ED\u30FC\u30EB\u540D\u4E00\u89A7\uFF08\u4F8B: \u7BA1\u7406\u8005, \u904B\u55B6\u8005, \u5229\u7528\u8005\uFF09"),screens:m.array(m.string().max(1e3)).optional().describe("\u753B\u9762ID\u4E00\u89A7\uFF08\u4F8B: SC-OP-01, SC-US-01\uFF09"),project_root:m.string().max(1e3).optional().describe("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u30D1\u30B9\uFF08\u81EA\u52D5\u691C\u51FA\u7528\uFF09")});function qS(e,t){let r=[`## \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D
203
203
  ${t.project_name??"(\u81EA\u52D5\u691C\u51FA)"}`];return t.roles?.length&&r.push(`## \u30ED\u30FC\u30EB
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ripla/godd-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.2-canary.1",
4
4
  "type": "module",
5
5
  "description": "GoDD (Governance-orchestrated Driven Development) MCP Server - Encrypted prompt distribution via Model Context Protocol",
6
6
  "main": "dist/index.js",
@@ -51,10 +51,10 @@ In particular, understand and strictly follow the principles, guidelines, and re
51
51
  - .instruction/01_specialties/planning.md
52
52
  - .instruction/01_specialties/design.md
53
53
  - .instruction/01_specialties/consultation.md
54
- - docs/009_spec/README.md
55
- - docs/009_spec/api-template.md
56
- - docs/009_spec/ui-template.md
57
- - docs/009_spec/db-template.md
54
+ - docs/003_requirements/spec/README.md
55
+ - docs/003_requirements/api.template.md
56
+ - docs/003_requirements/ui.template.md
57
+ - docs/003_requirements/db.template.md
58
58
 
59
59
  ## Expertise
60
60
 
@@ -14,10 +14,10 @@
14
14
 
15
15
  # Role (SSOT)
16
16
 
17
- - **Specifications (Spec)**: `docs/009_spec/` (.md)
18
- - **Operational templates**: `docs/010_templates/` (.md)
19
- - **Configuration descriptions**: `docs/011_config/README.md` (descriptions for yaml/json)
20
- - **Tech stack**: `docs/008_guides/tech-stack.md`
17
+ - **Specifications (Spec)**: `docs/003_requirements/spec/` (.md)
18
+ - **Operational templates**: `docs/006_development_workflow/` (.md)
19
+ - **Configuration descriptions**: `docs/007_guides/mcp.md` (descriptions for yaml/json)
20
+ - **Tech stack**: `docs/007_guides/tech-stack.md`
21
21
  - **Rules/Entry**: `AGENTS.md` / `docs/README.md`
22
22
 
23
23
  ## When to Use (Auto-Activation)
@@ -51,9 +51,9 @@ Before starting work, read and understand the `AGENTS.md` at the project root an
51
51
  - .instruction/02_project/architecture.md
52
52
  - .instruction/02_project/domain.md
53
53
  - .instruction/02_project/patterns.md
54
- - docs/009_spec/README.md
55
- - docs/009_spec/api-template.md
56
- - docs/009_spec/db-template.md
54
+ - docs/003_requirements/spec/README.md
55
+ - docs/003_requirements/api.template.md
56
+ - docs/003_requirements/db.template.md
57
57
 
58
58
  Reference implementation: `{{backend.root_dir}}/**`
59
59
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  ## Review Criteria (SSOT)
16
16
 
17
- - **Spec alignment**: Does implementation match `docs/009_spec/`?
17
+ - **Spec alignment**: Does implementation match `docs/003_requirements/spec/`?
18
18
  - **Boundaries**:
19
19
  - Backend: {{backend.dependency_direction}}
20
20
  - Front: UI and side effects separated (into hooks/services)
@@ -26,4 +26,4 @@
26
26
  ## Output Format
27
27
 
28
28
  - Issues are presented with **severity (Blocker/Important/Nice)**, reason, and specific fix proposals as a set
29
- - If additional Spec/templates are needed, include proposals to add to `docs/009_spec` or `docs/010_templates`
29
+ - If additional Spec/templates are needed, include proposals to add to `docs/003_requirements/spec` or `docs/006_development_workflow`
@@ -34,9 +34,9 @@ Before starting work, read and understand the `AGENTS.md` at the project root an
34
34
  - .instruction/02_project/architecture.md
35
35
  - .instruction/02_project/domain.md
36
36
  - .instruction/02_project/patterns.md
37
- - docs/009_spec/README.md
38
- - docs/009_spec/db-template.md
39
- - docs/009_spec/error-codes-template.md
37
+ - docs/003_requirements/spec/README.md
38
+ - docs/003_requirements/db.template.md
39
+ - docs/003_requirements/error-codes.template.md
40
40
 
41
41
  ## DB Change Policy
42
42
 
@@ -47,6 +47,6 @@ Before starting work, read and understand the `AGENTS.md` at the project root an
47
47
 
48
48
  ## Deliverables (Minimum)
49
49
 
50
- - **DB Spec**: Satisfies `docs/009_spec/db-template.md` (DDL diffs, compatibility, migration/rollback, indexes, application steps)
50
+ - **DB Spec**: Satisfies `docs/003_requirements/db.template.md` (DDL diffs, compatibility, migration/rollback, indexes, application steps)
51
51
  - **Migration**: Alembic revision and application steps (both Docker and local)
52
52
  - **Impact scope**: Impact on existing APIs/features (especially search, list, aggregation)
@@ -25,8 +25,8 @@ Don't "fix by guessing" — converge reliably in order: reproduce→hypothesize
25
25
 
26
26
  - AGENTS.md
27
27
  - .instruction/01_specialties/investigation-debug.md
28
- - docs/010_templates/impact-analysis-template.md
29
- - docs/010_templates/test-plan-template.md
28
+ - docs/006_development_workflow/impact-analysis.template.md
29
+ - docs/006_development_workflow/test-plan.template.md
30
30
 
31
31
  ## Investigation Report (Minimum Format)
32
32
 
@@ -30,7 +30,7 @@ Agent responsible for **environment setup, reproducibility, and onboarding** for
30
30
  ## What to Do
31
31
 
32
32
  - Maintain the preflight script as the canonical entry point
33
- - Update `docs/012_setup/` and `docs/011_config/`, making procedures SSOT
33
+ - Update `docs/007_guides/` and `docs/007_guides/`, making procedures SSOT
34
34
  - Ensure external tools can be launched according to configuration file declarations
35
35
 
36
36
  ## Output Format
@@ -30,11 +30,11 @@ Screens focus on rendering; side effects (fetching/saving/IPC) are delegated to
30
30
  - .instruction/00_universal/quality.md
31
31
  - .instruction/00_universal/communication.md
32
32
  - .instruction/02_project/tech-stack.md
33
- - docs/009_spec/README.md
34
- - docs/009_spec/ui-template.md
35
- - docs/009_spec/api-template.md
36
- - docs/010_templates/impact-analysis-template.md
37
- - docs/010_templates/test-plan-template.md
33
+ - docs/003_requirements/spec/README.md
34
+ - docs/003_requirements/ui.template.md
35
+ - docs/003_requirements/api.template.md
36
+ - docs/006_development_workflow/impact-analysis.template.md
37
+ - docs/006_development_workflow/test-plan.template.md
38
38
 
39
39
  ## Implementation Guide (Frontend)
40
40
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## Verification Template (Required)
21
21
 
22
- Based on `docs/010_templates/test-plan-template.md`, fill in at minimum:
22
+ Based on `docs/006_development_workflow/test-plan.template.md`, fill in at minimum:
23
23
  - Target features/modules
24
24
  - Normal/Error/Boundary cases
25
25
  - Manual verification steps and expected results
@@ -35,7 +35,7 @@ Retrieve the following via **Git MCP / git commands** and build the body from fa
35
35
  ## Generation Rules (PR Optimization)
36
36
 
37
37
  - **Title**: ~50 chars, change subject/purpose is unambiguous
38
- - **Body**: Fully compliant with `docs/010_templates/pr-template.md`
38
+ - **Body**: Fully compliant with `docs/006_development_workflow/pr.template.md`
39
39
  - **Changes**:
40
40
  - Write **"why"** (background/purpose) briefly before "what"
41
41
  - Change points in **bullet lists** at review-friendly granularity
@@ -14,9 +14,9 @@
14
14
 
15
15
  ## Quality Gate (Minimum)
16
16
 
17
- - **Spec**: Sufficient specifications exist in `docs/009_spec/` and match implementation
18
- - **Impact scope**: `docs/010_templates/impact-analysis-template.md` is filled
19
- - **Test plan**: `docs/010_templates/test-plan-template.md` is filled
17
+ - **Spec**: Sufficient specifications exist in `docs/003_requirements/spec/` and match implementation
18
+ - **Impact scope**: `docs/006_development_workflow/impact-analysis.template.md` is filled
19
+ - **Test plan**: `docs/006_development_workflow/test-plan.template.md` is filled
20
20
  - **Compatibility/Migration**: If breaking changes exist, migration/rollback are documented
21
21
  {{#if frontend.build_command}}- **Frontend changes**: `{{frontend.build_command}}` passes{{/if}}
22
22
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  ## Success Criteria
16
16
 
17
- - Purpose/completion criteria are measurably defined and distilled into **implementable-granularity Spec** (`docs/009_spec/`)
17
+ - Purpose/completion criteria are measurably defined and distilled into **implementable-granularity Spec** (`docs/003_requirements/spec/`)
18
18
  - If breaking changes/migration/rollback are needed, decision-making materials are prepared upfront
19
19
 
20
20
  ## Output (Minimum)
@@ -23,4 +23,4 @@
23
23
  - Current understanding (assumptions)
24
24
  - Unclear points (questions)
25
25
  - Options (standard/conservative/bold) with recommendation
26
- - Draft based on `docs/009_spec/*-template.md` (API/UI/DB/Feature/Usecase)
26
+ - Draft based on `docs/003_requirements/spec/*-template.md` (API/UI/DB/Feature/Usecase)
@@ -18,4 +18,4 @@
18
18
  - Authentication/Authorization (policy when needed)
19
19
  - Information leakage (logs/error messages/screen display)
20
20
  - External I/O (file/OS/network) failure behavior
21
- - Error code design (`docs/009_spec/error-codes-template.md`)
21
+ - Error code design (`docs/003_requirements/error-codes.template.md`)
@@ -15,7 +15,7 @@
15
15
  # Role
16
16
 
17
17
  This Agent's **sole responsibility is SSOT updates**.
18
- It receives the "latest Spec (input)" and updates `docs/009_spec/`.
18
+ It receives the "latest Spec (input)" and updates `docs/003_requirements/spec/`.
19
19
 
20
20
  ## Input (Required)
21
21
 
@@ -25,7 +25,7 @@ It receives the "latest Spec (input)" and updates `docs/009_spec/`.
25
25
 
26
26
  ## Acceptance Criteria (MUST)
27
27
 
28
- - **Traceability (Spec→Implementation→Test)** is added/updated in `docs/009_spec/index.md`
28
+ - **Traceability (Spec→Implementation→Test)** is added/updated in `docs/003_requirements/spec/index.md`
29
29
  - Added/updated links point to existing files (file paths exist)
30
30
  - If test commands don't exist/aren't ready, **document the fact** and alternative verification
31
31
  - If ambiguity remains in Spec (terminology/completion criteria/exceptions), formalize as questions
@@ -33,7 +33,7 @@ It receives the "latest Spec (input)" and updates `docs/009_spec/`.
33
33
  ## Work Procedure (Standard)
34
34
 
35
35
  1. Read input Spec, determine category (Feature/API/UI/Usecase/DB/Error)
36
- 2. Append to relevant section in `docs/009_spec/index.md` (create if missing)
36
+ 2. Append to relevant section in `docs/003_requirements/spec/index.md` (create if missing)
37
37
  3. List referenced implementation files/test commands and verify existence
38
38
  4. Fill in Spec template's "Implementation Reference" and "Test Reference" (mark missing as TODO)
39
39
  5. Check for contradictions between added/updated Specs (same terminology/completion criteria)
@@ -18,11 +18,11 @@ Maintain the SSOT for Spec-Driven Development, preparing "implementable-granular
18
18
 
19
19
  ## References (SSOT)
20
20
 
21
- - Spec: `docs/009_spec/`
22
- - Templates: `docs/010_templates/`
21
+ - Spec: `docs/003_requirements/spec/`
22
+ - Templates: `docs/006_development_workflow/`
23
23
  - Core guidelines: `AGENTS.md`
24
24
 
25
25
  ## Deliverables
26
26
 
27
27
  - Spec additions/updates (API/UI/DB/Feature/Usecase/Error Codes)
28
- - Impact analysis/Test plans/ADR/PR/Release notes (`docs/010_templates` format)
28
+ - Impact analysis/Test plans/ADR/PR/Release notes (`docs/006_development_workflow` format)
@@ -16,4 +16,4 @@
16
16
 
17
17
  - Bug fixes follow **reproduction test → fix → re-run** as the standard
18
18
  - Cover at the appropriate nearby layer (Backend: Domain/Usecase, Front: hooks/pure functions)
19
- - For large changes, fix perspectives first using `docs/010_templates/test-plan-template.md`
19
+ - For large changes, fix perspectives first using `docs/006_development_workflow/test-plan.template.md`
@@ -24,7 +24,7 @@ Enable developers to complete the full cycle — from environment setup to imple
24
24
  - Humans review **only via GitHub PR diffs**
25
25
 
26
26
  ## Canonical References
27
- - Spec: `docs/009_spec/`
27
+ - Spec: `docs/003_requirements/spec/`
28
28
  {{#if frontend}}- Frontend quality gate: `{{frontend.build_command}}`
29
29
  {{/if}}{{#if backend}}- Backend quality gate: `{{quality_gate.backend}}`
30
30
  {{/if}}