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.
- package/README.md +126 -89
- package/dist/cli.js +7 -3
- package/dist/commands/doctor.js +11 -2
- package/dist/commands/gen-architecture.js +14 -4
- package/dist/commands/gen-best-practices.js +12 -2
- package/dist/commands/gen-functional-spec.js +13 -3
- package/dist/commands/gen-project-readme.js +15 -5
- package/dist/commands/gen-technical-spec.js +13 -3
- package/dist/commands/gen-utils.js +9 -1
- package/dist/commands/hello.js +21 -3
- package/dist/commands/learn-deliver.js +17 -3
- package/dist/commands/learn-refine.js +32 -11
- package/dist/commands/learn-start.js +9 -2
- package/dist/commands/learn-utils.js +7 -4
- package/dist/commands/pr-audit.js +17 -3
- package/dist/commands/pr-finish.js +17 -3
- package/dist/commands/pr-report.js +17 -3
- package/dist/commands/pr-respond.js +17 -3
- package/dist/commands/pr-start.js +9 -2
- package/dist/commands/pr-utils.js +8 -5
- package/dist/commands/req-archive.js +14 -6
- package/dist/commands/req-create.js +71 -14
- package/dist/commands/req-export.js +11 -3
- package/dist/commands/req-finish.js +28 -13
- package/dist/commands/req-lint.js +10 -2
- package/dist/commands/req-list.js +10 -2
- package/dist/commands/req-plan.js +34 -12
- package/dist/commands/req-refine.js +54 -5
- package/dist/commands/req-report.js +10 -2
- package/dist/commands/req-start.js +29 -12
- package/dist/commands/req-status.js +10 -2
- package/dist/commands/test-plan.js +13 -5
- package/dist/context/flags.d.ts +2 -0
- package/dist/context/flags.js +5 -1
- package/dist/providers/codex.js +2 -2
- package/dist/router/prompt-map.js +17 -5
- package/dist/ui/prompt.d.ts +1 -0
- package/dist/ui/prompt.js +8 -0
- package/dist/validation/gates.d.ts +19 -0
- package/dist/validation/gates.js +41 -0
- package/dist/validation/validate.js +24 -4
- package/dist/workspace/index.d.ts +6 -0
- package/dist/workspace/index.js +41 -10
- package/flows/ADMISSIONS_ADMIN.md +34 -33
- package/flows/ART.md +34 -33
- package/flows/COURT_SYSTEM.md +34 -33
- package/flows/DATA_SCIENTIST.md +34 -33
- package/flows/ECOMMERCE.md +34 -33
- package/flows/ECONOMICS.md +34 -33
- package/flows/GRAPHIC_DESIGN.md +34 -33
- package/flows/HISTORY.md +34 -33
- package/flows/LAWYER.md +35 -34
- package/flows/PROGRAMMER.md +34 -33
- package/flows/RETAIL_STORE.md +34 -33
- package/flows/SOCIOLOGY.md +34 -33
- package/flows/STATE_ADMIN.md +34 -33
- package/flows/STUDENT_UNIVERSITY.md +34 -33
- package/flows/TAXES_ADMIN.md +34 -33
- package/flows/TEACHER.md +34 -33
- package/package.json +14 -4
- package/router/BUSINESS.flow.md +58 -57
- package/router/DATA_SCIENCE.flow.md +59 -58
- package/router/DESIGN.flow.md +59 -58
- package/router/HUMANITIES.flow.md +59 -58
- package/router/LEGAL.flow.md +59 -58
- 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
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
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;
|
package/dist/workspace/index.js
CHANGED
|
@@ -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
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
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((
|
|
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((
|
|
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 =
|
|
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
|
-
- `
|
|
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
|
-
- `
|
|
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
|
+
|
package/flows/COURT_SYSTEM.md
CHANGED
|
@@ -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
|
-
- `
|
|
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
|
+
|
package/flows/DATA_SCIENTIST.md
CHANGED
|
@@ -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
|
-
- `
|
|
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
|
+
|
package/flows/ECOMMERCE.md
CHANGED
|
@@ -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
|
-
- `
|
|
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
|
+
|
package/flows/ECONOMICS.md
CHANGED
|
@@ -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
|
-
- `
|
|
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
|
+
|