@intoinside/praxis 1.0.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/CODE_OF_CONDUCT.md +99 -0
- package/CONTRIBUTING.md +108 -0
- package/LICENSE +21 -0
- package/MAINTAINERS.md +9 -0
- package/README.md +319 -0
- package/intoinside-praxis-1.0.0.tgz +0 -0
- package/last_error.txt +42 -0
- package/package.json +40 -0
- package/src/commands/init.d.ts +1 -0
- package/src/commands/init.js +42 -0
- package/src/commands/init.ts +47 -0
- package/src/commands/integration/generate.d.ts +4 -0
- package/src/commands/integration/generate.js +69 -0
- package/src/commands/integration/generate.ts +85 -0
- package/src/commands/intent/create.d.ts +4 -0
- package/src/commands/intent/create.js +55 -0
- package/src/commands/intent/create.ts +61 -0
- package/src/commands/intent/list.d.ts +4 -0
- package/src/commands/intent/list.js +52 -0
- package/src/commands/intent/list.ts +63 -0
- package/src/commands/spec/apply.d.ts +4 -0
- package/src/commands/spec/apply.js +99 -0
- package/src/commands/spec/apply.ts +109 -0
- package/src/commands/spec/archive.d.ts +4 -0
- package/src/commands/spec/archive.js +114 -0
- package/src/commands/spec/archive.ts +121 -0
- package/src/commands/spec/delete.d.ts +4 -0
- package/src/commands/spec/delete.js +70 -0
- package/src/commands/spec/delete.ts +75 -0
- package/src/commands/spec/derive.d.ts +6 -0
- package/src/commands/spec/derive.js +107 -0
- package/src/commands/spec/derive.ts +117 -0
- package/src/core/command-generation/adapters/antigravity.d.ts +12 -0
- package/src/core/command-generation/adapters/antigravity.js +25 -0
- package/src/core/command-generation/adapters/antigravity.ts +30 -0
- package/src/core/command-generation/adapters/index.d.ts +6 -0
- package/src/core/command-generation/adapters/index.js +26 -0
- package/src/core/command-generation/adapters/index.ts +27 -0
- package/src/core/command-generation/generator.d.ts +20 -0
- package/src/core/command-generation/generator.js +26 -0
- package/src/core/command-generation/generator.ts +36 -0
- package/src/core/command-generation/index.d.ts +20 -0
- package/src/core/command-generation/index.js +23 -0
- package/src/core/command-generation/index.ts +33 -0
- package/src/core/command-generation/registry.d.ts +35 -0
- package/src/core/command-generation/registry.js +87 -0
- package/src/core/command-generation/registry.ts +95 -0
- package/src/core/command-generation/types.d.ts +54 -0
- package/src/core/command-generation/types.js +7 -0
- package/src/core/command-generation/types.ts +57 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +95 -0
- package/src/index.ts +97 -0
- package/src/manifest.d.ts +21 -0
- package/src/manifest.js +170 -0
- package/src/manifest.ts +188 -0
- package/templates/checklist-template.md +42 -0
- package/templates/intent-template.md +290 -0
- package/templates/spec-template.md +114 -0
- package/test_output.txt +0 -0
- package/tsconfig.json +20 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { manifest } from './manifest.js';
|
|
4
|
+
import { initCommand } from './commands/init.js';
|
|
5
|
+
import { intentCreateAction } from './commands/intent/create.js';
|
|
6
|
+
import { intentListAction } from './commands/intent/list.js';
|
|
7
|
+
import { generateSlashCommandsAction } from './commands/integration/generate.js';
|
|
8
|
+
|
|
9
|
+
import { specDeriveAction } from './commands/spec/derive.js';
|
|
10
|
+
import { specDeleteAction } from './commands/spec/delete.js';
|
|
11
|
+
import { specApplyAction } from './commands/spec/apply.js';
|
|
12
|
+
import { specArchiveAction } from './commands/spec/archive.js';
|
|
13
|
+
|
|
14
|
+
const program = new Command();
|
|
15
|
+
|
|
16
|
+
program
|
|
17
|
+
.name('praxis')
|
|
18
|
+
.description('Praxis: Intent-First Development Framework')
|
|
19
|
+
.version('1.0.0');
|
|
20
|
+
|
|
21
|
+
// Dynamically build commands from manifest
|
|
22
|
+
manifest.forEach((cmdDef) => {
|
|
23
|
+
const cmd = program.command(cmdDef.name).description(cmdDef.description);
|
|
24
|
+
|
|
25
|
+
if (cmdDef.subcommands) {
|
|
26
|
+
cmdDef.subcommands.forEach((subCmdDef) => {
|
|
27
|
+
const subCmd = cmd.command(subCmdDef.name).description(subCmdDef.description);
|
|
28
|
+
|
|
29
|
+
if (subCmdDef.arguments) {
|
|
30
|
+
subCmdDef.arguments.forEach(arg => {
|
|
31
|
+
const argStr = arg.required ? `<${arg.name}>` : `[${arg.name}]`;
|
|
32
|
+
subCmd.argument(argStr, arg.description);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (subCmdDef.options) {
|
|
37
|
+
subCmdDef.options.forEach(opt => {
|
|
38
|
+
const flag = opt.required ? `<${opt.name}>` : `[${opt.name}]`;
|
|
39
|
+
subCmd.option(opt.alias ? `-${opt.alias}, --${opt.name} ${flag}` : `--${opt.name} ${flag}`, opt.description);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
subCmd.action(async (...args: any[]) => {
|
|
44
|
+
if (cmdDef.name === 'intent' && subCmdDef.name === 'create') {
|
|
45
|
+
const [description] = args;
|
|
46
|
+
await intentCreateAction(description);
|
|
47
|
+
} else if (cmdDef.name === 'intent' && subCmdDef.name === 'list') {
|
|
48
|
+
await intentListAction();
|
|
49
|
+
} else if (cmdDef.name === 'integration' && subCmdDef.name === 'generate-slash-commands') {
|
|
50
|
+
const [tool] = args;
|
|
51
|
+
await generateSlashCommandsAction(tool);
|
|
52
|
+
} else if (cmdDef.name === 'spec' && subCmdDef.name === 'derive') {
|
|
53
|
+
const [options] = args;
|
|
54
|
+
await specDeriveAction(options);
|
|
55
|
+
} else if (cmdDef.name === 'spec' && subCmdDef.name === 'delete') {
|
|
56
|
+
const [specId] = args;
|
|
57
|
+
await specDeleteAction(specId);
|
|
58
|
+
} else if (cmdDef.name === 'spec' && subCmdDef.name === 'apply') {
|
|
59
|
+
const [specId] = args;
|
|
60
|
+
await specApplyAction(specId);
|
|
61
|
+
} else if (cmdDef.name === 'spec' && subCmdDef.name === 'archive') {
|
|
62
|
+
const [specId] = args;
|
|
63
|
+
await specArchiveAction(specId);
|
|
64
|
+
} else {
|
|
65
|
+
console.log(`Executing ${cmdDef.name} ${subCmdDef.name}...`);
|
|
66
|
+
// Implementation will go here
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
} else {
|
|
71
|
+
// Top-level command with no subcommands
|
|
72
|
+
if (cmdDef.arguments) {
|
|
73
|
+
cmdDef.arguments.forEach(arg => {
|
|
74
|
+
const argStr = arg.required ? `<${arg.name}>` : `[${arg.name}]`;
|
|
75
|
+
cmd.argument(argStr, arg.description);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (cmdDef.options) {
|
|
80
|
+
cmdDef.options.forEach(opt => {
|
|
81
|
+
const flag = opt.required ? `<${opt.name}>` : `[${opt.name}]`;
|
|
82
|
+
cmd.option(opt.alias ? `-${opt.alias}, --${opt.name} ${flag}` : `--${opt.name} ${flag}`, opt.description);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
cmd.action(async () => {
|
|
87
|
+
if (cmdDef.name === 'init') {
|
|
88
|
+
await initCommand();
|
|
89
|
+
} else {
|
|
90
|
+
console.log(`Executing ${cmdDef.name}...`);
|
|
91
|
+
// Implementation will go here
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
program.parse();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Praxis Command Manifest
|
|
3
|
+
* This file defines all supported commands and subcommands for the Praxis CLI.
|
|
4
|
+
*/
|
|
5
|
+
export interface CommandDefinition {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
subcommands?: CommandDefinition[];
|
|
9
|
+
options?: {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
alias?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
}[];
|
|
15
|
+
arguments?: {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
}[];
|
|
20
|
+
}
|
|
21
|
+
export declare const manifest: CommandDefinition[];
|
package/src/manifest.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Praxis Command Manifest
|
|
3
|
+
* This file defines all supported commands and subcommands for the Praxis CLI.
|
|
4
|
+
*/
|
|
5
|
+
export const manifest = [
|
|
6
|
+
{
|
|
7
|
+
name: 'init',
|
|
8
|
+
description: 'Initialize a new project to be used with Praxis',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'intent',
|
|
12
|
+
description: 'Manage intents (the WHY)',
|
|
13
|
+
subcommands: [
|
|
14
|
+
{
|
|
15
|
+
name: 'create',
|
|
16
|
+
description: 'Create a new intent',
|
|
17
|
+
arguments: [
|
|
18
|
+
{
|
|
19
|
+
name: 'description',
|
|
20
|
+
description: 'The description of the intent to create',
|
|
21
|
+
required: true,
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'update',
|
|
27
|
+
description: 'Update an existing intent',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'validate',
|
|
31
|
+
description: 'Validate all intents for completeness and consistency',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'list',
|
|
35
|
+
description: 'List all defined intents',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'check',
|
|
39
|
+
description: 'Verify that current specs and code still satisfy all intents',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'model',
|
|
45
|
+
description: 'Generate or update the intent model',
|
|
46
|
+
options: [
|
|
47
|
+
{
|
|
48
|
+
name: 'intent-id',
|
|
49
|
+
description: 'The ID of the intent to model',
|
|
50
|
+
required: true
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'spec',
|
|
56
|
+
description: 'Manage specifications (the WHAT)',
|
|
57
|
+
subcommands: [
|
|
58
|
+
{
|
|
59
|
+
name: 'derive',
|
|
60
|
+
description: 'Generate initial specifications from an intent or intent model',
|
|
61
|
+
options: [
|
|
62
|
+
{
|
|
63
|
+
name: 'from',
|
|
64
|
+
description: 'The ID of the intent or model to derive from',
|
|
65
|
+
required: true,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'refine',
|
|
71
|
+
description: 'Manually refine a specification while preserving intent traceability',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'validate',
|
|
75
|
+
description: 'Validate specs for internal consistency and completeness',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'lock',
|
|
79
|
+
description: 'Lock a specification as a formal contract',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'list',
|
|
83
|
+
description: 'List all specifications and their associated intents',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'check',
|
|
87
|
+
description: 'Verify implementation compliance against locked specs',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'delete',
|
|
91
|
+
description: 'Delete a specification and its artifacts',
|
|
92
|
+
arguments: [
|
|
93
|
+
{
|
|
94
|
+
name: 'spec-id',
|
|
95
|
+
description: 'The ID of the spec to delete',
|
|
96
|
+
required: true,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'archive',
|
|
102
|
+
description: 'Archive a specification',
|
|
103
|
+
arguments: [
|
|
104
|
+
{
|
|
105
|
+
name: 'spec-id',
|
|
106
|
+
description: 'The ID of the spec to archive',
|
|
107
|
+
required: true,
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'apply',
|
|
113
|
+
description: 'Implement a specification',
|
|
114
|
+
arguments: [
|
|
115
|
+
{
|
|
116
|
+
name: 'spec-id',
|
|
117
|
+
description: 'The ID of the spec to apply',
|
|
118
|
+
required: true,
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'analyze',
|
|
126
|
+
description: 'Analyze impact and drift',
|
|
127
|
+
subcommands: [
|
|
128
|
+
{
|
|
129
|
+
name: 'impact',
|
|
130
|
+
description: 'Analyze the impact of changes to an intent on specs and code',
|
|
131
|
+
options: [
|
|
132
|
+
{
|
|
133
|
+
name: 'intent',
|
|
134
|
+
description: 'The ID of the intent to analyze',
|
|
135
|
+
required: true,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'drift',
|
|
141
|
+
description: 'Detect intent/spec/code drift',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'integration',
|
|
147
|
+
description: 'IDE and AI integration',
|
|
148
|
+
subcommands: [
|
|
149
|
+
{
|
|
150
|
+
name: 'serve',
|
|
151
|
+
description: 'Expose Praxis commands through a local service',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'commands',
|
|
155
|
+
description: 'List all available commands in machine-readable form',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'generate-slash-commands',
|
|
159
|
+
description: 'Generate slash command definitions for IDE integration',
|
|
160
|
+
arguments: [
|
|
161
|
+
{
|
|
162
|
+
name: 'tool',
|
|
163
|
+
description: 'The tool ID (e.g., antigravity)',
|
|
164
|
+
required: true,
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
];
|
package/src/manifest.ts
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Praxis Command Manifest
|
|
3
|
+
* This file defines all supported commands and subcommands for the Praxis CLI.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface CommandDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
subcommands?: CommandDefinition[];
|
|
10
|
+
options?: {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
alias?: string;
|
|
14
|
+
required?: boolean;
|
|
15
|
+
}[];
|
|
16
|
+
arguments?: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
required?: boolean;
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const manifest: CommandDefinition[] = [
|
|
24
|
+
{
|
|
25
|
+
name: 'init',
|
|
26
|
+
description: 'Initialize a new project to be used with Praxis',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'intent',
|
|
30
|
+
description: 'Manage intents (the WHY)',
|
|
31
|
+
subcommands: [
|
|
32
|
+
{
|
|
33
|
+
name: 'create',
|
|
34
|
+
description: 'Create a new intent',
|
|
35
|
+
arguments: [
|
|
36
|
+
{
|
|
37
|
+
name: 'description',
|
|
38
|
+
description: 'The description of the intent to create',
|
|
39
|
+
required: true,
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'update',
|
|
45
|
+
description: 'Update an existing intent',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'validate',
|
|
49
|
+
description: 'Validate all intents for completeness and consistency',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'list',
|
|
53
|
+
description: 'List all defined intents',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'check',
|
|
57
|
+
description: 'Verify that current specs and code still satisfy all intents',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'model',
|
|
63
|
+
description: 'Generate or update the intent model',
|
|
64
|
+
options: [
|
|
65
|
+
{
|
|
66
|
+
name: 'intent-id',
|
|
67
|
+
description: 'The ID of the intent to model',
|
|
68
|
+
required: true
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'spec',
|
|
74
|
+
description: 'Manage specifications (the WHAT)',
|
|
75
|
+
subcommands: [
|
|
76
|
+
{
|
|
77
|
+
name: 'derive',
|
|
78
|
+
description: 'Generate initial specifications from an intent or intent model',
|
|
79
|
+
options: [
|
|
80
|
+
{
|
|
81
|
+
name: 'from',
|
|
82
|
+
description: 'The ID of the intent or model to derive from',
|
|
83
|
+
required: true,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'refine',
|
|
89
|
+
description: 'Manually refine a specification while preserving intent traceability',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'validate',
|
|
93
|
+
description: 'Validate specs for internal consistency and completeness',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'lock',
|
|
97
|
+
description: 'Lock a specification as a formal contract',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'list',
|
|
101
|
+
description: 'List all specifications and their associated intents',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'check',
|
|
105
|
+
description: 'Verify implementation compliance against locked specs',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'delete',
|
|
109
|
+
description: 'Delete a specification and its artifacts',
|
|
110
|
+
arguments: [
|
|
111
|
+
{
|
|
112
|
+
name: 'spec-id',
|
|
113
|
+
description: 'The ID of the spec to delete',
|
|
114
|
+
required: true,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'archive',
|
|
120
|
+
description: 'Archive a specification',
|
|
121
|
+
arguments: [
|
|
122
|
+
{
|
|
123
|
+
name: 'spec-id',
|
|
124
|
+
description: 'The ID of the spec to archive',
|
|
125
|
+
required: true,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'apply',
|
|
131
|
+
description: 'Implement a specification',
|
|
132
|
+
arguments: [
|
|
133
|
+
{
|
|
134
|
+
name: 'spec-id',
|
|
135
|
+
description: 'The ID of the spec to apply',
|
|
136
|
+
required: true,
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'analyze',
|
|
144
|
+
description: 'Analyze impact and drift',
|
|
145
|
+
subcommands: [
|
|
146
|
+
{
|
|
147
|
+
name: 'impact',
|
|
148
|
+
description: 'Analyze the impact of changes to an intent on specs and code',
|
|
149
|
+
options: [
|
|
150
|
+
{
|
|
151
|
+
name: 'intent',
|
|
152
|
+
description: 'The ID of the intent to analyze',
|
|
153
|
+
required: true,
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'drift',
|
|
159
|
+
description: 'Detect intent/spec/code drift',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: 'integration',
|
|
165
|
+
description: 'IDE and AI integration',
|
|
166
|
+
subcommands: [
|
|
167
|
+
{
|
|
168
|
+
name: 'serve',
|
|
169
|
+
description: 'Expose Praxis commands through a local service',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'commands',
|
|
173
|
+
description: 'List all available commands in machine-readable form',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'generate-slash-commands',
|
|
177
|
+
description: 'Generate slash command definitions for IDE integration',
|
|
178
|
+
arguments: [
|
|
179
|
+
{
|
|
180
|
+
name: 'tool',
|
|
181
|
+
description: 'The tool ID (e.g., antigravity)',
|
|
182
|
+
required: true,
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# [Feature] Requirements Quality Checklist
|
|
2
|
+
|
|
3
|
+
**Purpose**: Validate intent completeness and quality before proceeding to planning
|
|
4
|
+
**Created**: [DATE]
|
|
5
|
+
**Feature**: [Link to intent.md]
|
|
6
|
+
|
|
7
|
+
## Content Quality
|
|
8
|
+
|
|
9
|
+
- [ ] No implementation details (languages, frameworks, APIs)
|
|
10
|
+
- [ ] Focused on user value and business needs
|
|
11
|
+
- [ ] Written for non-technical stakeholders
|
|
12
|
+
- [ ] All mandatory sections completed
|
|
13
|
+
- [ ] User stories prioritized by business value and technical feasibility
|
|
14
|
+
- [ ] Clear success thresholds defined (minimum viable, target, stretch goals)
|
|
15
|
+
|
|
16
|
+
## Requirement Completeness
|
|
17
|
+
|
|
18
|
+
- [ ] No [NEEDS CLARIFICATION] markers remain
|
|
19
|
+
- [ ] Requirements are testable and unambiguous
|
|
20
|
+
- [ ] Success criteria are measurable
|
|
21
|
+
- [ ] Success criteria are technology-agnostic (no implementation details)
|
|
22
|
+
- [ ] All acceptance scenarios are defined
|
|
23
|
+
- [ ] Edge cases are identified
|
|
24
|
+
- [ ] Scope is clearly bounded
|
|
25
|
+
- [ ] Dependencies and assumptions identified
|
|
26
|
+
- [ ] Non-functional requirements specified (performance, security, scalability, usability)
|
|
27
|
+
|
|
28
|
+
## Feature Readiness
|
|
29
|
+
|
|
30
|
+
- [ ] All functional requirements have clear acceptance criteria
|
|
31
|
+
- [ ] User scenarios cover primary flows
|
|
32
|
+
- [ ] Feature meets measurable outcomes defined in Success Criteria
|
|
33
|
+
- [ ] No implementation details leak into intent
|
|
34
|
+
- [ ] User stories are independently testable and deliverable
|
|
35
|
+
- [ ] Risk assessment and mitigation strategies documented
|
|
36
|
+
|
|
37
|
+
## Validation Results
|
|
38
|
+
|
|
39
|
+
- [ ] Checklist completed by: [Name/Role]
|
|
40
|
+
- [ ] Date of validation: [DATE]
|
|
41
|
+
- [ ] Overall status: [Pass/Fail/Conditional Pass]
|
|
42
|
+
- [ ] Action items for improvements: [List any required changes]
|