sdd-cli 0.1.0 → 0.1.3

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 (66) hide show
  1. package/README.md +126 -89
  2. package/dist/cli.js +7 -3
  3. package/dist/commands/doctor.js +11 -2
  4. package/dist/commands/gen-architecture.js +14 -4
  5. package/dist/commands/gen-best-practices.js +12 -2
  6. package/dist/commands/gen-functional-spec.js +13 -3
  7. package/dist/commands/gen-project-readme.js +15 -5
  8. package/dist/commands/gen-technical-spec.js +13 -3
  9. package/dist/commands/gen-utils.js +9 -1
  10. package/dist/commands/hello.js +21 -3
  11. package/dist/commands/learn-deliver.js +17 -3
  12. package/dist/commands/learn-refine.js +32 -11
  13. package/dist/commands/learn-start.js +9 -2
  14. package/dist/commands/learn-utils.js +7 -4
  15. package/dist/commands/pr-audit.js +17 -3
  16. package/dist/commands/pr-finish.js +17 -3
  17. package/dist/commands/pr-report.js +17 -3
  18. package/dist/commands/pr-respond.js +17 -3
  19. package/dist/commands/pr-start.js +9 -2
  20. package/dist/commands/pr-utils.js +8 -5
  21. package/dist/commands/req-archive.js +14 -6
  22. package/dist/commands/req-create.js +71 -14
  23. package/dist/commands/req-export.js +11 -3
  24. package/dist/commands/req-finish.js +28 -13
  25. package/dist/commands/req-lint.js +10 -2
  26. package/dist/commands/req-list.js +10 -2
  27. package/dist/commands/req-plan.js +34 -12
  28. package/dist/commands/req-refine.js +54 -5
  29. package/dist/commands/req-report.js +10 -2
  30. package/dist/commands/req-start.js +29 -12
  31. package/dist/commands/req-status.js +10 -2
  32. package/dist/commands/test-plan.js +13 -5
  33. package/dist/context/flags.d.ts +2 -0
  34. package/dist/context/flags.js +5 -1
  35. package/dist/providers/codex.js +2 -2
  36. package/dist/router/prompt-map.js +17 -5
  37. package/dist/ui/prompt.d.ts +1 -0
  38. package/dist/ui/prompt.js +8 -0
  39. package/dist/validation/gates.d.ts +19 -0
  40. package/dist/validation/gates.js +41 -0
  41. package/dist/validation/validate.js +24 -4
  42. package/dist/workspace/index.d.ts +6 -0
  43. package/dist/workspace/index.js +41 -10
  44. package/flows/ADMISSIONS_ADMIN.md +34 -33
  45. package/flows/ART.md +34 -33
  46. package/flows/COURT_SYSTEM.md +34 -33
  47. package/flows/DATA_SCIENTIST.md +34 -33
  48. package/flows/ECOMMERCE.md +34 -33
  49. package/flows/ECONOMICS.md +34 -33
  50. package/flows/GRAPHIC_DESIGN.md +34 -33
  51. package/flows/HISTORY.md +34 -33
  52. package/flows/LAWYER.md +35 -34
  53. package/flows/PROGRAMMER.md +34 -33
  54. package/flows/RETAIL_STORE.md +34 -33
  55. package/flows/SOCIOLOGY.md +34 -33
  56. package/flows/STATE_ADMIN.md +34 -33
  57. package/flows/STUDENT_UNIVERSITY.md +34 -33
  58. package/flows/TAXES_ADMIN.md +34 -33
  59. package/flows/TEACHER.md +34 -33
  60. package/package.json +14 -4
  61. package/router/BUSINESS.flow.md +58 -57
  62. package/router/DATA_SCIENCE.flow.md +59 -58
  63. package/router/DESIGN.flow.md +59 -58
  64. package/router/HUMANITIES.flow.md +59 -58
  65. package/router/LEGAL.flow.md +59 -58
  66. package/router/SOFTWARE_FEATURE.flow.md +60 -59
package/dist/ui/prompt.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ask = ask;
7
+ exports.askProjectName = askProjectName;
7
8
  exports.confirm = confirm;
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const readline_1 = __importDefault(require("readline"));
@@ -38,6 +39,13 @@ function ask(question) {
38
39
  });
39
40
  });
40
41
  }
42
+ async function askProjectName(prompt = "Project name: ") {
43
+ const flags = (0, flags_1.getFlags)();
44
+ if (flags.project && flags.project.trim().length > 0) {
45
+ return flags.project.trim();
46
+ }
47
+ return ask(prompt);
48
+ }
41
49
  async function confirm(question) {
42
50
  const flags = (0, flags_1.getFlags)();
43
51
  if (flags.approve) {
@@ -0,0 +1,19 @@
1
+ type RequirementPayload = {
2
+ objective?: string;
3
+ scope?: {
4
+ in?: string[];
5
+ out?: string[];
6
+ };
7
+ acceptanceCriteria?: string[];
8
+ nfrs?: {
9
+ security?: string;
10
+ performance?: string;
11
+ availability?: string;
12
+ };
13
+ };
14
+ export type GateResult = {
15
+ ok: boolean;
16
+ missing: string[];
17
+ };
18
+ export declare function checkRequirementGates(payload: RequirementPayload): GateResult;
19
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkRequirementGates = checkRequirementGates;
4
+ function isMissingText(value) {
5
+ if (!value) {
6
+ return true;
7
+ }
8
+ const trimmed = value.trim();
9
+ return trimmed.length === 0 || trimmed.toUpperCase() === "N/A";
10
+ }
11
+ function isMissingList(values) {
12
+ if (!values || values.length === 0) {
13
+ return true;
14
+ }
15
+ return values.every((value) => isMissingText(value));
16
+ }
17
+ function checkRequirementGates(payload) {
18
+ const missing = [];
19
+ if (isMissingText(payload.objective)) {
20
+ missing.push("objective");
21
+ }
22
+ if (isMissingList(payload.scope?.in)) {
23
+ missing.push("scope.in");
24
+ }
25
+ if (isMissingList(payload.scope?.out)) {
26
+ missing.push("scope.out");
27
+ }
28
+ if (isMissingList(payload.acceptanceCriteria)) {
29
+ missing.push("acceptanceCriteria");
30
+ }
31
+ if (isMissingText(payload.nfrs?.security)) {
32
+ missing.push("nfrs.security");
33
+ }
34
+ if (isMissingText(payload.nfrs?.performance)) {
35
+ missing.push("nfrs.performance");
36
+ }
37
+ if (isMissingText(payload.nfrs?.availability)) {
38
+ missing.push("nfrs.availability");
39
+ }
40
+ return { ok: missing.length === 0, missing };
41
+ }
@@ -8,12 +8,32 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const _2020_1 = __importDefault(require("ajv/dist/2020"));
10
10
  const paths_1 = require("../paths");
11
+ function loadSchemas(root) {
12
+ const schemaDir = path_1.default.join(root, "schemas");
13
+ const schemaFiles = fs_1.default.readdirSync(schemaDir).filter((file) => file.endsWith(".schema.json"));
14
+ const schemas = new Map();
15
+ for (const file of schemaFiles) {
16
+ const schemaPath = path_1.default.join(schemaDir, file);
17
+ const schema = JSON.parse(fs_1.default.readFileSync(schemaPath, "utf-8"));
18
+ if (!schema.$id) {
19
+ schema.$id = file;
20
+ }
21
+ schemas.set(file, schema);
22
+ }
23
+ return schemas;
24
+ }
11
25
  function validateJson(schemaFile, data) {
12
26
  const root = (0, paths_1.getRepoRoot)();
13
- const schemaPath = path_1.default.join(root, "schemas", schemaFile);
14
- const schema = JSON.parse(fs_1.default.readFileSync(schemaPath, "utf-8"));
15
- const ajv = new _2020_1.default();
16
- const validate = ajv.compile(schema);
27
+ const schemas = loadSchemas(root);
28
+ const ajv = new _2020_1.default({ allErrors: true });
29
+ for (const schema of schemas.values()) {
30
+ const candidate = schema;
31
+ ajv.addSchema(candidate, candidate.$id);
32
+ }
33
+ const validate = ajv.getSchema(schemaFile);
34
+ if (!validate) {
35
+ return { valid: false, errors: [`Schema not found: ${schemaFile}`] };
36
+ }
17
37
  const valid = validate(data);
18
38
  const errors = (validate.errors ?? []).map((error) => `${error.instancePath} ${error.message}`.trim());
19
39
  return { valid: Boolean(valid), errors };
@@ -13,8 +13,14 @@ export type WorkspaceInfo = {
13
13
  root: string;
14
14
  indexPath: string;
15
15
  };
16
+ export type ProjectInfo = {
17
+ name: string;
18
+ root: string;
19
+ };
16
20
  export declare function getWorkspaceInfo(): WorkspaceInfo;
17
21
  export declare function ensureWorkspace(workspace: WorkspaceInfo): void;
22
+ export declare function normalizeProjectName(name: string): string;
23
+ export declare function getProjectInfo(workspace: WorkspaceInfo, name: string): ProjectInfo;
18
24
  export declare function listProjects(workspace: WorkspaceInfo): ProjectSummary[];
19
25
  export declare function ensureProject(workspace: WorkspaceInfo, name: string, domain: string): ProjectMetadata;
20
26
  export declare function createProject(workspace: WorkspaceInfo, name: string, domain: string): ProjectMetadata;
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getWorkspaceInfo = getWorkspaceInfo;
7
7
  exports.ensureWorkspace = ensureWorkspace;
8
+ exports.normalizeProjectName = normalizeProjectName;
9
+ exports.getProjectInfo = getProjectInfo;
8
10
  exports.listProjects = listProjects;
9
11
  exports.ensureProject = ensureProject;
10
12
  exports.createProject = createProject;
@@ -12,10 +14,14 @@ exports.updateProjectStatus = updateProjectStatus;
12
14
  const fs_1 = __importDefault(require("fs"));
13
15
  const path_1 = __importDefault(require("path"));
14
16
  const os_1 = __importDefault(require("os"));
17
+ const flags_1 = require("../context/flags");
15
18
  function getWorkspaceInfo() {
16
- const root = process.env.APPDATA
17
- ? path_1.default.join(process.env.APPDATA, "sdd-tool", "workspaces")
18
- : path_1.default.join(os_1.default.homedir(), ".config", "sdd-tool", "workspaces");
19
+ const flags = (0, flags_1.getFlags)();
20
+ const root = flags.output
21
+ ? path_1.default.resolve(flags.output)
22
+ : process.env.APPDATA
23
+ ? path_1.default.join(process.env.APPDATA, "sdd-cli", "workspaces")
24
+ : path_1.default.join(os_1.default.homedir(), ".config", "sdd-cli", "workspaces");
19
25
  const indexPath = path_1.default.join(root, "workspaces.json");
20
26
  return { root, indexPath };
21
27
  }
@@ -28,6 +34,29 @@ function ensureWorkspace(workspace) {
28
34
  fs_1.default.writeFileSync(workspace.indexPath, JSON.stringify(emptyIndex, null, 2), "utf-8");
29
35
  }
30
36
  }
37
+ function normalizeProjectName(name) {
38
+ const trimmed = name.trim();
39
+ if (!trimmed) {
40
+ throw new Error("Project name is required.");
41
+ }
42
+ if (trimmed.includes("..") || trimmed.includes("/") || trimmed.includes("\\")) {
43
+ throw new Error("Project name cannot contain path separators.");
44
+ }
45
+ if (!/^[A-Za-z0-9][A-Za-z0-9 _-]*$/.test(trimmed)) {
46
+ throw new Error("Project name must use letters, numbers, spaces, '-' or '_' only.");
47
+ }
48
+ return trimmed;
49
+ }
50
+ function getProjectInfo(workspace, name) {
51
+ const normalized = normalizeProjectName(name);
52
+ const resolvedRoot = path_1.default.resolve(workspace.root);
53
+ const projectRoot = path_1.default.resolve(workspace.root, normalized);
54
+ const rootPrefix = `${resolvedRoot}${path_1.default.sep}`;
55
+ if (projectRoot !== resolvedRoot && !projectRoot.startsWith(rootPrefix)) {
56
+ throw new Error("Project name resolves outside the workspace.");
57
+ }
58
+ return { name: normalized, root: projectRoot };
59
+ }
31
60
  function listProjects(workspace) {
32
61
  if (!fs_1.default.existsSync(workspace.indexPath)) {
33
62
  return [];
@@ -41,7 +70,8 @@ function listProjects(workspace) {
41
70
  }
42
71
  function ensureProject(workspace, name, domain) {
43
72
  ensureWorkspace(workspace);
44
- const projectRoot = path_1.default.join(workspace.root, name);
73
+ const project = getProjectInfo(workspace, name);
74
+ const projectRoot = project.root;
45
75
  if (!fs_1.default.existsSync(projectRoot)) {
46
76
  fs_1.default.mkdirSync(projectRoot, { recursive: true });
47
77
  }
@@ -55,7 +85,7 @@ function ensureProject(workspace, name, domain) {
55
85
  else {
56
86
  const now = new Date().toISOString();
57
87
  metadata = {
58
- name,
88
+ name: project.name,
59
89
  status: "backlog",
60
90
  domain,
61
91
  createdAt: now,
@@ -66,12 +96,12 @@ function ensureProject(workspace, name, domain) {
66
96
  const indexRaw = fs_1.default.readFileSync(workspace.indexPath, "utf-8");
67
97
  const index = JSON.parse(indexRaw);
68
98
  index.projects = index.projects ?? [];
69
- const existing = index.projects.find((project) => project.name === name);
99
+ const existing = index.projects.find((entry) => entry.name === project.name);
70
100
  if (existing) {
71
101
  existing.status = metadata.status;
72
102
  }
73
103
  else {
74
- index.projects.push({ name, status: metadata.status });
104
+ index.projects.push({ name: metadata.name, status: metadata.status });
75
105
  }
76
106
  fs_1.default.writeFileSync(workspace.indexPath, JSON.stringify(index, null, 2), "utf-8");
77
107
  return metadata;
@@ -81,18 +111,19 @@ function createProject(workspace, name, domain) {
81
111
  }
82
112
  function updateProjectStatus(workspace, name, status) {
83
113
  ensureWorkspace(workspace);
114
+ const project = getProjectInfo(workspace, name);
84
115
  const indexRaw = fs_1.default.readFileSync(workspace.indexPath, "utf-8");
85
116
  const index = JSON.parse(indexRaw);
86
117
  index.projects = index.projects ?? [];
87
- const existing = index.projects.find((project) => project.name === name);
118
+ const existing = index.projects.find((entry) => entry.name === project.name);
88
119
  if (existing) {
89
120
  existing.status = status;
90
121
  }
91
122
  else {
92
- index.projects.push({ name, status });
123
+ index.projects.push({ name: project.name, status });
93
124
  }
94
125
  fs_1.default.writeFileSync(workspace.indexPath, JSON.stringify(index, null, 2), "utf-8");
95
- const projectRoot = path_1.default.join(workspace.root, name);
126
+ const projectRoot = project.root;
96
127
  const metadataPath = path_1.default.join(projectRoot, "metadata.json");
97
128
  if (fs_1.default.existsSync(metadataPath)) {
98
129
  const metadata = JSON.parse(fs_1.default.readFileSync(metadataPath, "utf-8"));
@@ -1,33 +1,34 @@
1
- # Flow: Admissions admin
2
-
3
- ## Goal
4
- Manage applications, documents, approvals, and communication with clear audit trails.
5
-
6
- ## Discovery prompts
7
- - What application stages exist (submitted, reviewed, approved, waitlist)?
8
- - What documents are required and how are they verified?
9
- - Who has approval authority and what rules apply?
10
- - Are there quotas or priority rules?
11
- - What integrations exist (email, CRM, identity verification)?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with eligibility and decision rules
15
- - `functional-spec.md` for intake, review, and decision workflows
16
- - `technical-spec.md` for document verification and notifications
17
- - `architecture.md` including workflow engine and queueing
18
- - `test-plan.md` for fairness and correctness checks
19
-
20
- ## Risk and compliance
21
- - Data privacy and retention
22
- - Bias and fairness risks
23
- - Auditability for decisions
24
-
25
- ## Acceptance criteria examples
26
- - Every decision is traceable to a reviewer and criteria.
27
- - Documents cannot be edited without history tracking.
28
- - Applicants get status updates within defined time windows.
29
-
30
- ## Recommended outputs
31
- - Application pipeline dashboard
32
- - Document verification checklist
33
- - Decision audit report
1
+ # Flow: Admissions admin
2
+
3
+ ## Goal
4
+ Manage applications, documents, approvals, and communication with clear audit trails.
5
+
6
+ ## Discovery prompts
7
+ - What application stages exist (submitted, reviewed, approved, waitlist)?
8
+ - What documents are required and how are they verified?
9
+ - Who has approval authority and what rules apply?
10
+ - Are there quotas or priority rules?
11
+ - What integrations exist (email, CRM, identity verification)?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with eligibility and decision rules
15
+ - `functional-spec.md` for intake, review, and decision workflows
16
+ - `technical-spec.md` for document verification and notifications
17
+ - `docs/ARCHITECTURE.md` including workflow engine and queueing
18
+ - `test-plan.md` for fairness and correctness checks
19
+
20
+ ## Risk and compliance
21
+ - Data privacy and retention
22
+ - Bias and fairness risks
23
+ - Auditability for decisions
24
+
25
+ ## Acceptance criteria examples
26
+ - Every decision is traceable to a reviewer and criteria.
27
+ - Documents cannot be edited without history tracking.
28
+ - Applicants get status updates within defined time windows.
29
+
30
+ ## Recommended outputs
31
+ - Application pipeline dashboard
32
+ - Document verification checklist
33
+ - Decision audit report
34
+
package/flows/ART.md CHANGED
@@ -1,33 +1,34 @@
1
- # Flow: Art project
2
-
3
- ## Goal
4
- Create an art piece or series with a clear concept, process, and critique cycle.
5
-
6
- ## Discovery prompts
7
- - What is the concept or theme?
8
- - What medium and format are required?
9
- - What is the audience or exhibition context?
10
- - What is the timeline and budget?
11
- - What references or inspirations apply?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with concept and constraints
15
- - `functional-spec.md` for narrative or interaction flow
16
- - `technical-spec.md` for materials and production steps
17
- - `architecture.md` for series structure or installation layout
18
- - `test-plan.md` for critique and iteration checkpoints
19
-
20
- ## Risk and compliance
21
- - Material constraints and safety
22
- - Copyright and reference usage
23
- - Delivery and installation risks
24
-
25
- ## Acceptance criteria examples
26
- - Concept is clear and articulated.
27
- - Production steps are feasible in the timeline.
28
- - Final piece aligns with exhibition constraints.
29
-
30
- ## Recommended outputs
31
- - Concept brief
32
- - Production plan
33
- - Critique log
1
+ # Flow: Art project
2
+
3
+ ## Goal
4
+ Create an art piece or series with a clear concept, process, and critique cycle.
5
+
6
+ ## Discovery prompts
7
+ - What is the concept or theme?
8
+ - What medium and format are required?
9
+ - What is the audience or exhibition context?
10
+ - What is the timeline and budget?
11
+ - What references or inspirations apply?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with concept and constraints
15
+ - `functional-spec.md` for narrative or interaction flow
16
+ - `technical-spec.md` for materials and production steps
17
+ - `docs/ARCHITECTURE.md` for series structure or installation layout
18
+ - `test-plan.md` for critique and iteration checkpoints
19
+
20
+ ## Risk and compliance
21
+ - Material constraints and safety
22
+ - Copyright and reference usage
23
+ - Delivery and installation risks
24
+
25
+ ## Acceptance criteria examples
26
+ - Concept is clear and articulated.
27
+ - Production steps are feasible in the timeline.
28
+ - Final piece aligns with exhibition constraints.
29
+
30
+ ## Recommended outputs
31
+ - Concept brief
32
+ - Production plan
33
+ - Critique log
34
+
@@ -1,33 +1,34 @@
1
- # Flow: Court system
2
-
3
- ## Goal
4
- Manage case intake, hearings, rulings, and records with strict auditability and compliance.
5
-
6
- ## Discovery prompts
7
- - What case types and jurisdictions are included?
8
- - What rules govern access and privacy?
9
- - What is the expected SLA for filings and responses?
10
- - What are the archival and retention requirements?
11
- - What integrations exist with external justice systems?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with legal constraints and actors
15
- - `functional-spec.md` for filing, scheduling, and ruling flows
16
- - `technical-spec.md` for access control and audit logs
17
- - `architecture.md` for resiliency and record management
18
- - `test-plan.md` for permissions and compliance verification
19
-
20
- ## Risk and compliance
21
- - Evidence integrity and chain of custody
22
- - Unauthorized access risks
23
- - Retention and public records compliance
24
-
25
- ## Acceptance criteria examples
26
- - All case actions are logged and immutable.
27
- - Access is enforced by role and jurisdiction.
28
- - Records can be produced for audit in minutes.
29
-
30
- ## Recommended outputs
31
- - Court docket workflow
32
- - Evidence chain-of-custody log
33
- - Compliance audit pack
1
+ # Flow: Court system
2
+
3
+ ## Goal
4
+ Manage case intake, hearings, rulings, and records with strict auditability and compliance.
5
+
6
+ ## Discovery prompts
7
+ - What case types and jurisdictions are included?
8
+ - What rules govern access and privacy?
9
+ - What is the expected SLA for filings and responses?
10
+ - What are the archival and retention requirements?
11
+ - What integrations exist with external justice systems?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with legal constraints and actors
15
+ - `functional-spec.md` for filing, scheduling, and ruling flows
16
+ - `technical-spec.md` for access control and audit logs
17
+ - `docs/ARCHITECTURE.md` for resiliency and record management
18
+ - `test-plan.md` for permissions and compliance verification
19
+
20
+ ## Risk and compliance
21
+ - Evidence integrity and chain of custody
22
+ - Unauthorized access risks
23
+ - Retention and public records compliance
24
+
25
+ ## Acceptance criteria examples
26
+ - All case actions are logged and immutable.
27
+ - Access is enforced by role and jurisdiction.
28
+ - Records can be produced for audit in minutes.
29
+
30
+ ## Recommended outputs
31
+ - Court docket workflow
32
+ - Evidence chain-of-custody log
33
+ - Compliance audit pack
34
+
@@ -1,33 +1,34 @@
1
- # Flow: Data scientist
2
-
3
- ## Goal
4
- Deliver a data product or model with reproducible experiments and measurable impact.
5
-
6
- ## Discovery prompts
7
- - What business or research question are we answering?
8
- - What data sources exist and what is their quality?
9
- - What are the target metrics (accuracy, recall, ROI)?
10
- - What constraints exist (latency, cost, fairness)?
11
- - How will the model be monitored post-release?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with objective and success metrics
15
- - `functional-spec.md` for data flows and user interactions
16
- - `technical-spec.md` for pipelines, features, and infra
17
- - `architecture.md` for data storage and serving
18
- - `test-plan.md` for data validation and model evaluation
19
-
20
- ## Risk and compliance
21
- - Data bias and fairness
22
- - Privacy and consent
23
- - Model drift and monitoring gaps
24
-
25
- ## Acceptance criteria examples
26
- - Model meets minimum metric thresholds.
27
- - Data validation passes for all critical datasets.
28
- - Monitoring alerts exist for drift and anomalies.
29
-
30
- ## Recommended outputs
31
- - Feature catalog
32
- - Experiment tracking plan
33
- - Model card summary
1
+ # Flow: Data scientist
2
+
3
+ ## Goal
4
+ Deliver a data product or model with reproducible experiments and measurable impact.
5
+
6
+ ## Discovery prompts
7
+ - What business or research question are we answering?
8
+ - What data sources exist and what is their quality?
9
+ - What are the target metrics (accuracy, recall, ROI)?
10
+ - What constraints exist (latency, cost, fairness)?
11
+ - How will the model be monitored post-release?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with objective and success metrics
15
+ - `functional-spec.md` for data flows and user interactions
16
+ - `technical-spec.md` for pipelines, features, and infra
17
+ - `docs/ARCHITECTURE.md` for data storage and serving
18
+ - `test-plan.md` for data validation and model evaluation
19
+
20
+ ## Risk and compliance
21
+ - Data bias and fairness
22
+ - Privacy and consent
23
+ - Model drift and monitoring gaps
24
+
25
+ ## Acceptance criteria examples
26
+ - Model meets minimum metric thresholds.
27
+ - Data validation passes for all critical datasets.
28
+ - Monitoring alerts exist for drift and anomalies.
29
+
30
+ ## Recommended outputs
31
+ - Feature catalog
32
+ - Experiment tracking plan
33
+ - Model card summary
34
+
@@ -1,33 +1,34 @@
1
- # Flow: Ecommerce
2
-
3
- ## Goal
4
- Build or extend an ecommerce platform with reliable checkout and inventory integrity.
5
-
6
- ## Discovery prompts
7
- - What products and catalog rules exist?
8
- - What payment providers are used?
9
- - What are peak traffic expectations?
10
- - What are return/refund rules?
11
- - What are compliance requirements (PCI, taxes)?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with revenue and conversion goals
15
- - `functional-spec.md` for browse, cart, checkout, returns
16
- - `technical-spec.md` for payment and order integrations
17
- - `architecture.md` for scaling and availability
18
- - `test-plan.md` for checkout and payment validation
19
-
20
- ## Risk and compliance
21
- - Payment failures and data leakage
22
- - Inventory inconsistencies
23
- - Peak traffic and downtime
24
-
25
- ## Acceptance criteria examples
26
- - Checkout success rate above threshold.
27
- - Inventory updates are consistent across channels.
28
- - Payment data never stored in plaintext.
29
-
30
- ## Recommended outputs
31
- - Checkout flow diagram
32
- - Fraud prevention checklist
33
- - Post-purchase email templates
1
+ # Flow: Ecommerce
2
+
3
+ ## Goal
4
+ Build or extend an ecommerce platform with reliable checkout and inventory integrity.
5
+
6
+ ## Discovery prompts
7
+ - What products and catalog rules exist?
8
+ - What payment providers are used?
9
+ - What are peak traffic expectations?
10
+ - What are return/refund rules?
11
+ - What are compliance requirements (PCI, taxes)?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with revenue and conversion goals
15
+ - `functional-spec.md` for browse, cart, checkout, returns
16
+ - `technical-spec.md` for payment and order integrations
17
+ - `docs/ARCHITECTURE.md` for scaling and availability
18
+ - `test-plan.md` for checkout and payment validation
19
+
20
+ ## Risk and compliance
21
+ - Payment failures and data leakage
22
+ - Inventory inconsistencies
23
+ - Peak traffic and downtime
24
+
25
+ ## Acceptance criteria examples
26
+ - Checkout success rate above threshold.
27
+ - Inventory updates are consistent across channels.
28
+ - Payment data never stored in plaintext.
29
+
30
+ ## Recommended outputs
31
+ - Checkout flow diagram
32
+ - Fraud prevention checklist
33
+ - Post-purchase email templates
34
+
@@ -1,33 +1,34 @@
1
- # Flow: Economics / policy analysis
2
-
3
- ## Goal
4
- Analyze economic scenarios or policy impacts with clear assumptions and models.
5
-
6
- ## Discovery prompts
7
- - What policy or market question is being analyzed?
8
- - What scope and geography are covered?
9
- - What time horizon is relevant?
10
- - What data sources or models are required?
11
- - What stakeholders need the results?
12
-
13
- ## Required artifacts
14
- - `requirement.md` with objectives and constraints
15
- - `functional-spec.md` for analysis flow and outputs
16
- - `technical-spec.md` for models and datasets
17
- - `architecture.md` for data pipeline and reporting
18
- - `test-plan.md` for sensitivity and robustness checks
19
-
20
- ## Risk and compliance
21
- - Model assumptions and bias
22
- - Data quality issues
23
- - Overconfidence in forecasts
24
-
25
- ## Acceptance criteria examples
26
- - Assumptions are explicit and defensible.
27
- - Sensitivity analysis is included.
28
- - Results are reproducible.
29
-
30
- ## Recommended outputs
31
- - Assumptions log
32
- - Scenario matrix
33
- - Executive summary
1
+ # Flow: Economics / policy analysis
2
+
3
+ ## Goal
4
+ Analyze economic scenarios or policy impacts with clear assumptions and models.
5
+
6
+ ## Discovery prompts
7
+ - What policy or market question is being analyzed?
8
+ - What scope and geography are covered?
9
+ - What time horizon is relevant?
10
+ - What data sources or models are required?
11
+ - What stakeholders need the results?
12
+
13
+ ## Required artifacts
14
+ - `requirement.md` with objectives and constraints
15
+ - `functional-spec.md` for analysis flow and outputs
16
+ - `technical-spec.md` for models and datasets
17
+ - `docs/ARCHITECTURE.md` for data pipeline and reporting
18
+ - `test-plan.md` for sensitivity and robustness checks
19
+
20
+ ## Risk and compliance
21
+ - Model assumptions and bias
22
+ - Data quality issues
23
+ - Overconfidence in forecasts
24
+
25
+ ## Acceptance criteria examples
26
+ - Assumptions are explicit and defensible.
27
+ - Sensitivity analysis is included.
28
+ - Results are reproducible.
29
+
30
+ ## Recommended outputs
31
+ - Assumptions log
32
+ - Scenario matrix
33
+ - Executive summary
34
+