@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.
- package/README.md +2 -2
- package/dist/godd.cjs +116 -111
- package/dist/godd.js +114 -17
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/agents/architect.hbs +4 -4
- package/templates/agents/auto-documenter.hbs +4 -4
- package/templates/agents/backend-developer.hbs +3 -3
- package/templates/agents/code-reviewer.hbs +2 -2
- package/templates/agents/database-developer.hbs +4 -4
- package/templates/agents/debug-specialist.hbs +2 -2
- package/templates/agents/environment-setup.hbs +1 -1
- package/templates/agents/frontend-developer.hbs +5 -5
- package/templates/agents/integration-qa.hbs +1 -1
- package/templates/agents/pr-writer.hbs +1 -1
- package/templates/agents/quality-lead.hbs +3 -3
- package/templates/agents/requirements-analyst.hbs +2 -2
- package/templates/agents/security-analyst.hbs +1 -1
- package/templates/agents/ssot-updater.hbs +3 -3
- package/templates/agents/technical-writer.hbs +3 -3
- package/templates/agents/unit-test-engineer.hbs +1 -1
- package/templates/prompts/agent-dev-workflow.hbs +1 -1
- package/templates/prompts/docs-init.hbs +41 -59
- package/templates/prompts/docs-update.hbs +10 -10
- package/templates/prompts/notes-deploy.hbs +2 -1
- package/templates/prompts/pr-create.hbs +2 -2
- package/templates/prompts/push-execute.hbs +2 -2
- package/templates/prompts/push.hbs +1 -1
- package/templates/prompts/requirements-to-business-flow.hbs +1 -1
- package/templates/prompts/specification-to-tickets.hbs +1 -1
- package/templates/prompts/submit.hbs +2 -2
- 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/
|
|
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
|
-
|
|
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
|
|
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
|
|
34697
|
+
copyFileSync as copyFileSync3,
|
|
34601
34698
|
readdirSync as readdirSync4,
|
|
34602
|
-
statSync as
|
|
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
|
|
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 (
|
|
34657
|
-
|
|
34753
|
+
if (statSync3(srcPath).isDirectory()) {
|
|
34754
|
+
copyDirRecursive2(srcPath, destPath);
|
|
34658
34755
|
} else {
|
|
34659
|
-
|
|
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
|
-
|
|
35061
|
+
copyDirRecursive2(apiDir, join10(config2.deployDir, "notes-api"));
|
|
34965
35062
|
console.log("[3/5] notes-app \u3092\u30B3\u30D4\u30FC...");
|
|
34966
|
-
|
|
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
|
|
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/
|
|
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.
|
|
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/
|
|
55
|
-
- docs/
|
|
56
|
-
- docs/
|
|
57
|
-
- docs/
|
|
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/
|
|
18
|
-
- **Operational templates**: `docs/
|
|
19
|
-
- **Configuration descriptions**: `docs/
|
|
20
|
-
- **Tech stack**: `docs/
|
|
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/
|
|
55
|
-
- docs/
|
|
56
|
-
- docs/
|
|
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/
|
|
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/
|
|
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/
|
|
38
|
-
- docs/
|
|
39
|
-
- docs/
|
|
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/
|
|
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/
|
|
29
|
-
- docs/
|
|
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/
|
|
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/
|
|
34
|
-
- docs/
|
|
35
|
-
- docs/
|
|
36
|
-
- docs/
|
|
37
|
-
- docs/
|
|
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/
|
|
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/
|
|
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/
|
|
18
|
-
- **Impact scope**: `docs/
|
|
19
|
-
- **Test plan**: `docs/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
22
|
-
- Templates: `docs/
|
|
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/
|
|
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/
|
|
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/
|
|
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}}
|