@sallmarta/eye-hate-agent 1.0.1 → 1.0.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 (89) hide show
  1. package/README.md +38 -310
  2. package/bin/eha.js +203 -118
  3. package/docs/templates/project-docs-template/foundation/architecture.md +79 -0
  4. package/docs/templates/project-docs-template/foundation/changelog.md +53 -0
  5. package/docs/templates/project-docs-template/foundation/feature-inventory.md +46 -0
  6. package/docs/templates/project-docs-template/foundation/phases.md +60 -0
  7. package/docs/templates/project-docs-template/foundation/prd.md +69 -0
  8. package/docs/templates/project-docs-template/foundation/status.md +57 -0
  9. package/docs/templates/project-docs-template/foundation/workflow.md +59 -0
  10. package/docs/templates/project-docs-template/getting-started.md +52 -0
  11. package/docs/{vibes → templates}/project-docs-template/index.md +12 -12
  12. package/docs/templates/project-docs-template/operations/ci-cd.md +56 -0
  13. package/docs/templates/project-docs-template/operations/compliance.md +46 -0
  14. package/docs/templates/project-docs-template/operations/governance.md +46 -0
  15. package/docs/templates/project-docs-template/operations/observability.md +53 -0
  16. package/docs/templates/project-docs-template/operations/production-runbook.md +62 -0
  17. package/docs/templates/project-docs-template/operations/security.md +49 -0
  18. package/docs/templates/project-docs-template/technical/api-contract.md +49 -0
  19. package/docs/templates/project-docs-template/technical/database.md +59 -0
  20. package/docs/templates/project-docs-template/technical/error-handling.md +54 -0
  21. package/docs/templates/project-docs-template/technical/internationalization.md +46 -0
  22. package/docs/templates/project-docs-template/technical/testing.md +57 -0
  23. package/docs/templates/project-docs-template/technical/ui-ux.md +68 -0
  24. package/docs/{vibes → templates}/project-docs-template/technical-guidelines/index.md +3 -3
  25. package/docs/{vibes → templates}/reusable-prompts/00-project-docs-bootstrap.md +2 -4
  26. package/docs/{vibes → templates}/reusable-prompts/00-project-docs-parity.md +3 -5
  27. package/docs/{vibes → templates}/reusable-prompts/00-project-docs-refresh.md +2 -4
  28. package/docs/{vibes → templates}/reusable-prompts/02-sdd-discuss.md +2 -2
  29. package/{.agents/rules/agent.md → docs/templates/rules/agent-rules.md} +6 -11
  30. package/docs/templates/skills/architecture/db-schema-design/SKILL.md +14 -0
  31. package/docs/{vibes/skills → templates/skills/auditing}/full-verification/SKILL.md +1 -1
  32. package/docs/{vibes/skills → templates/skills/auditing}/parity/SKILL.md +2 -2
  33. package/docs/templates/skills/engineering/refactor-specialist/SKILL.md +13 -0
  34. package/docs/{vibes/skills → templates/skills/engineering}/test-authoring/SKILL.md +177 -1
  35. package/docs/templates/skills/engineering/ui-ux-implementation/SKILL.md +13 -0
  36. package/docs/templates/skills/operations/ci-cd-authoring/SKILL.md +13 -0
  37. package/docs/templates/skills/operations/observability-setup/SKILL.md +13 -0
  38. package/package.json +4 -6
  39. package/src/engine/index.js +7 -12
  40. package/src/engine/install.js +67 -163
  41. package/src/engine/runtime-adapters.js +263 -50
  42. package/src/engine/skill-registry.js +67 -0
  43. package/src/engine/state.js +29 -7
  44. package/src/engine/workflow-registry.js +14 -23
  45. package/.claude/commands/eha/README.md +0 -3
  46. package/.claude/commands/eha/eha-bootstrap.md +0 -9
  47. package/.claude/commands/eha/eha-discuss.md +0 -9
  48. package/.claude/commands/eha/eha-execute.md +0 -9
  49. package/.claude/commands/eha/eha-parity.md +0 -9
  50. package/.claude/commands/eha/eha-refresh.md +0 -9
  51. package/.claude/commands/eha/eha-verify.md +0 -9
  52. package/.claude/rules/agent-rules.md +0 -64
  53. package/.github/instructions/agent-rules.instructions.md +0 -63
  54. package/.github/instructions/eha-workflows.instructions.md +0 -21
  55. package/docs/eyehateagent-contract.md +0 -475
  56. package/docs/eyehateagent-maintenance.md +0 -103
  57. package/docs/project-docs/changelog.md +0 -293
  58. package/docs/project-docs/foundation/architecture.md +0 -117
  59. package/docs/project-docs/foundation/status.md +0 -32
  60. package/docs/project-docs/foundation/workflow.md +0 -63
  61. package/docs/project-docs/index.md +0 -20
  62. package/docs/project-docs/testing.md +0 -73
  63. package/docs/vibes/project-docs-template/foundation/architecture.md +0 -79
  64. package/docs/vibes/project-docs-template/foundation/changelog.md +0 -53
  65. package/docs/vibes/project-docs-template/foundation/feature-inventory.md +0 -46
  66. package/docs/vibes/project-docs-template/foundation/phases.md +0 -60
  67. package/docs/vibes/project-docs-template/foundation/prd.md +0 -69
  68. package/docs/vibes/project-docs-template/foundation/status.md +0 -57
  69. package/docs/vibes/project-docs-template/foundation/workflow.md +0 -59
  70. package/docs/vibes/project-docs-template/getting-started.md +0 -52
  71. package/docs/vibes/project-docs-template/operations/ci-cd.md +0 -56
  72. package/docs/vibes/project-docs-template/operations/compliance.md +0 -46
  73. package/docs/vibes/project-docs-template/operations/governance.md +0 -46
  74. package/docs/vibes/project-docs-template/operations/observability.md +0 -53
  75. package/docs/vibes/project-docs-template/operations/production-runbook.md +0 -62
  76. package/docs/vibes/project-docs-template/operations/security.md +0 -49
  77. package/docs/vibes/project-docs-template/technical/api-contract.md +0 -49
  78. package/docs/vibes/project-docs-template/technical/database.md +0 -59
  79. package/docs/vibes/project-docs-template/technical/error-handling.md +0 -54
  80. package/docs/vibes/project-docs-template/technical/internationalization.md +0 -46
  81. package/docs/vibes/project-docs-template/technical/testing.md +0 -57
  82. package/docs/vibes/project-docs-template/technical/ui-ux.md +0 -68
  83. package/docs/vibes/skills/project-elevation/SKILL.md +0 -157
  84. package/docs/vibes/skills/test-authoring/references/patterns.md +0 -116
  85. package/docs/vibes/skills/test-authoring/references/test-types.md +0 -52
  86. /package/docs/{vibes → templates}/reusable-prompts/01-sdd-execute.md +0 -0
  87. /package/docs/{vibes/skills → templates/skills/architecture}/api-design/SKILL.md +0 -0
  88. /package/docs/{vibes/skills/analysis → templates/skills/architecture/system-analysis}/SKILL.md +0 -0
  89. /package/docs/{vibes/skills/code-audit → templates/skills/auditing/security-audit}/SKILL.md +0 -0
package/bin/eha.js CHANGED
@@ -1,163 +1,248 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ 'use strict';
4
+
3
5
  const { program } = require('commander');
4
6
  const chalk = require('chalk');
7
+ const readline = require('node:readline/promises');
5
8
  const {
6
- DEFAULT_RUNTIME_IDS,
9
+ SUPPORTED_AGENT_IDS,
7
10
  doctor,
8
11
  findRepoRoot,
9
- getWorkflow,
10
- installRuntimes,
12
+ initProject,
11
13
  listSupportedRuntimes,
12
- prepareWorkflowRun,
13
- uninstallRuntimes,
14
+ listWorkflows,
15
+ readConfig,
16
+ readProjectManifest,
17
+ removeProject,
14
18
  } = require('../src/engine');
15
19
 
16
- function formatRuntimeList(runtimes) {
17
- return runtimes.map((runtime) => `${runtime.id} (${runtime.supportTier})`).join(', ');
20
+ const pkg = require('../package.json');
21
+
22
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
23
+
24
+ async function promptAgentChoice(currentAgent) {
25
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
26
+ try {
27
+ const defaultLabel = currentAgent || SUPPORTED_AGENT_IDS[0];
28
+ const answer = await rl.question(
29
+ `Which agent? [${SUPPORTED_AGENT_IDS.join('/')}] (default: ${defaultLabel}): `,
30
+ );
31
+ const normalized = answer.trim().toLowerCase();
32
+ return normalized || defaultLabel;
33
+ } finally {
34
+ rl.close();
35
+ }
18
36
  }
19
37
 
20
- function printDoctorSummary(result) {
21
- console.log(chalk.blue('EHA doctor'));
22
- console.log(`Repo root: ${result.rootDir}`);
23
- console.log(`Engine state: ${result.paths.stateDir}`);
24
- console.log(`Install manifest: ${result.paths.manifestPath}`);
25
- console.log(`Supported runtimes: ${formatRuntimeList(result.supportedRuntimes)}`);
26
- console.log(`Generated outputs live inside repo: ${result.generatedOutputsInsideRepo ? 'yes' : 'no'}`);
27
-
28
- if (result.installedRuntimes.length === 0) {
29
- console.log(chalk.yellow('No runtimes are currently installed.'));
30
- return;
38
+ async function promptOverwriteOrDiscard(message) {
39
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
40
+ try {
41
+ const answer = await rl.question(`${message} [O]verwrite / [D]iscard (default: D): `);
42
+ return answer.trim().toLowerCase() === 'o';
43
+ } finally {
44
+ rl.close();
31
45
  }
46
+ }
32
47
 
33
- console.log(chalk.green('Installed runtimes:'));
34
- for (const runtime of result.installedRuntimes) {
35
- console.log(`- ${runtime.id}: ${runtime.fileCount} generated file(s), support tier ${runtime.supportTier}`);
48
+ async function promptConfirm(message, defaultYes = false) {
49
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
50
+ try {
51
+ const hint = defaultYes ? '[Y/n]' : '[y/N]';
52
+ const answer = await rl.question(`${message} ${hint}: `);
53
+ const normalized = answer.trim().toLowerCase();
54
+ if (!normalized) return defaultYes;
55
+ return normalized === 'y';
56
+ } finally {
57
+ rl.close();
36
58
  }
37
59
  }
38
60
 
39
- function printInstallSummary(action, result) {
40
- console.log(chalk.blue(`EHA ${action}`));
41
- console.log(`Repo root: ${result.rootDir}`);
42
- console.log(`Runtimes: ${result.runtimes.join(', ')}`);
43
- console.log(`Manifest: ${result.manifestPath}`);
44
- for (const runtime of result.runtimeSummaries) {
45
- console.log(`- ${runtime.id}: ${runtime.fileCount} file(s), support tier ${runtime.supportTier}`);
61
+ function resolveRootDir() {
62
+ try {
63
+ return findRepoRoot(process.cwd());
64
+ } catch {
65
+ console.error(
66
+ chalk.red('No project root found.') +
67
+ ' Run ' +
68
+ chalk.cyan('npm init -y') +
69
+ ' or ' +
70
+ chalk.cyan('git init') +
71
+ ' first.',
72
+ );
73
+ process.exit(1);
46
74
  }
47
75
  }
48
76
 
49
- function printWorkflowSummary(result) {
50
- console.log(chalk.blue(`EHA workflow: ${result.workflow.id}`));
51
- console.log(`Source workflow: ${result.workflow.repoRelativePath}`);
52
- console.log(`Prepared prompt: ${result.promptPath}`);
53
- if (result.workflow.capabilityNote) {
54
- console.log(chalk.yellow(`Note: ${result.workflow.capabilityNote}`));
77
+ function printInitSummary(result) {
78
+ console.log('');
79
+ console.log(chalk.green('✓ EHA is ready.'));
80
+ console.log(` Agent : ${chalk.cyan(result.agentId)}`);
81
+ console.log(` Files : ${result.fileCount} file(s) generated`);
82
+ for (const f of result.files) {
83
+ console.log(` ${chalk.gray(f)}`);
55
84
  }
56
- if (result.contextText) {
57
- console.log(chalk.gray(`Additional context captured in ${result.promptPath}`));
85
+ console.log('');
86
+
87
+ if (result.agentId === 'claude') {
88
+ console.log('Open Claude in this project and run ' + chalk.cyan('/eha-bootstrap') + ' to get started.');
89
+ } else if (result.agentId === 'copilot') {
90
+ console.log(
91
+ 'Open GitHub Copilot agent mode and attach ' +
92
+ chalk.cyan('#eha-bootstrap.prompt.md') +
93
+ ' to get started.',
94
+ );
58
95
  }
96
+ console.log('');
59
97
  }
60
98
 
61
- function installWorkflowCommand(workflowId) {
62
- const workflow = getWorkflow(workflowId);
63
-
64
- program
65
- .command(`${workflow.id} [context...]`)
66
- .description(workflow.description)
67
- .option('--print', 'Print the assembled prompt instead of the summary')
68
- .action((contextParts, options) => {
69
- const rootDir = findRepoRoot(process.cwd());
70
- const contextText = (contextParts || []).join(' ').trim();
71
- const result = prepareWorkflowRun({
72
- rootDir,
73
- workflowId: workflow.id,
74
- contextText,
75
- });
76
-
77
- if (options.print) {
78
- process.stdout.write(result.promptContent);
99
+ function printDoctorSummary(result) {
100
+ console.log('');
101
+ console.log(chalk.blue('EHA doctor'));
102
+ console.log(` Root : ${result.rootDir}`);
103
+ console.log(` Config : ${result.paths.configPath}`);
104
+ console.log(` Agent : ${result.agentId ? chalk.cyan(result.agentId) : chalk.yellow('not set — run eha init')}`);
105
+ console.log('');
106
+
107
+ if (!result.isInitialized) {
108
+ console.log(chalk.yellow('EHA is not initialized in this project. Run eha init to set it up.'));
109
+ console.log('');
110
+ return;
111
+ }
112
+
113
+ const allPresent = result.generatedFiles.every((f) => f.exists);
114
+ if (allPresent) {
115
+ console.log(chalk.green('All generated files are present:'));
116
+ } else {
117
+ console.log(chalk.yellow('Some generated files are missing (re-run eha init to restore):'));
118
+ }
119
+ for (const f of result.generatedFiles) {
120
+ const icon = f.exists ? chalk.green('✓') : chalk.red('✗');
121
+ console.log(` ${icon} ${f.relativePath}`);
122
+ }
123
+ console.log('');
124
+ }
125
+
126
+ // ─── Wizard (shared by bare invocation and `eha init`) ────────────────────────
127
+
128
+ async function runInitWizard(agentIdArg) {
129
+ const rootDir = resolveRootDir();
130
+ const config = readConfig(rootDir);
131
+
132
+ let agentId = agentIdArg ? String(agentIdArg).trim().toLowerCase() : null;
133
+
134
+ if (!agentId) {
135
+ if (config.agent) {
136
+ const manifest = readProjectManifest(rootDir);
137
+ if (manifest.packageVersion !== pkg.version && process.stdin.isTTY && process.stdout.isTTY) {
138
+ const regenerate = await promptConfirm(
139
+ `EHA files were generated by v${manifest.packageVersion ?? 'unknown'}, current is v${pkg.version}. Regenerate?`,
140
+ true,
141
+ );
142
+ if (!regenerate) {
143
+ console.log('Skipped.');
144
+ return;
145
+ }
146
+ const result = initProject({ rootDir, agentId: config.agent });
147
+ printInitSummary(result);
148
+ return;
149
+ }
150
+ if (process.stdin.isTTY && process.stdout.isTTY) {
151
+ const overwrite = await promptOverwriteOrDiscard(
152
+ `EHA already set up (agent: ${chalk.cyan(config.agent)}).`,
153
+ );
154
+ if (!overwrite) {
155
+ console.log('Discarded.');
156
+ return;
157
+ }
158
+ }
159
+ }
160
+
161
+ if (process.stdin.isTTY && process.stdout.isTTY) {
162
+ agentId = await promptAgentChoice(config.agent);
163
+ } else {
164
+ agentId = config.agent || SUPPORTED_AGENT_IDS[0];
165
+ }
166
+ } else if (config.agent && config.agent !== agentId) {
167
+ if (process.stdin.isTTY && process.stdout.isTTY) {
168
+ const overwrite = await promptOverwriteOrDiscard(
169
+ `EHA already set up (agent: ${chalk.cyan(config.agent)}). Switch to ${chalk.cyan(agentId)}?`,
170
+ );
171
+ if (!overwrite) {
172
+ console.log('Discarded.');
79
173
  return;
80
174
  }
175
+ }
176
+ }
177
+
178
+ if (!SUPPORTED_AGENT_IDS.includes(agentId)) {
179
+ console.error(
180
+ chalk.red(`Unsupported agent: ${agentId}.`) +
181
+ ` Choose one of: ${SUPPORTED_AGENT_IDS.join(', ')}.`,
182
+ );
183
+ process.exit(1);
184
+ }
81
185
 
82
- printWorkflowSummary(result);
83
- });
186
+ const result = initProject({ rootDir, agentId });
187
+ printInitSummary(result);
84
188
  }
85
189
 
86
- program
87
- .name('eha')
88
- .description('Eye Hate Agent (EHA) engine and installer')
89
- .version('1.0.0');
190
+ // ─── CLI definition ────────────────────────────────────────────────────────────
90
191
 
91
- program
92
- .command('install [runtimes...]')
93
- .description('Generate repo-local runtime surfaces for EHA')
94
- .action((runtimes) => {
95
- const rootDir = findRepoRoot(process.cwd());
96
- const result = installRuntimes({
97
- rootDir,
98
- runtimes: runtimes && runtimes.length > 0 ? runtimes : DEFAULT_RUNTIME_IDS,
99
- });
100
- printInstallSummary('install', result);
101
- });
192
+ program.name('eha').description('Eye Hate Agent (EHA) — AI workflow toolkit').version(pkg.version);
102
193
 
103
- program
104
- .command('uninstall [runtimes...]')
105
- .description('Remove generated repo-local runtime surfaces for EHA')
106
- .action((runtimes) => {
107
- const rootDir = findRepoRoot(process.cwd());
108
- const result = uninstallRuntimes({
109
- rootDir,
110
- runtimes: runtimes && runtimes.length > 0 ? runtimes : DEFAULT_RUNTIME_IDS,
111
- });
112
- printInstallSummary('uninstall', result);
113
- });
194
+ // Bare `eha` / `eyehateagent` with no subcommand runs the init wizard.
195
+ program.action(async () => {
196
+ await runInitWizard(null);
197
+ });
114
198
 
115
199
  program
116
- .command('doctor')
117
- .description('Inspect EHA engine state, supported runtimes, and installed outputs')
118
- .action(() => {
119
- const rootDir = findRepoRoot(process.cwd());
120
- printDoctorSummary(doctor({ rootDir }));
200
+ .command('init [agent]')
201
+ .description(`Set up EHA in this project. Agent: ${SUPPORTED_AGENT_IDS.join(' | ')}`)
202
+ .action(async (agentArg) => {
203
+ await runInitWizard(agentArg || null);
121
204
  });
122
205
 
123
- installWorkflowCommand('bootstrap');
124
- installWorkflowCommand('refresh');
125
- installWorkflowCommand('parity');
126
- installWorkflowCommand('discuss');
127
- installWorkflowCommand('execute');
128
- installWorkflowCommand('verify');
129
-
130
206
  program
131
- .command('init [context...]')
132
- .description('Alias for bootstrap')
133
- .option('--print', 'Print the assembled prompt instead of the summary')
134
- .action((contextParts, options) => {
135
- const rootDir = findRepoRoot(process.cwd());
136
- const contextText = (contextParts || []).join(' ').trim();
137
- const result = prepareWorkflowRun({
138
- rootDir,
139
- workflowId: 'bootstrap',
140
- contextText,
141
- invokedAs: 'init',
142
- });
143
-
144
- if (options.print) {
145
- process.stdout.write(result.promptContent);
207
+ .command('remove')
208
+ .description('Remove EHA-generated files and config from this project')
209
+ .action(async () => {
210
+ const rootDir = resolveRootDir();
211
+ const config = readConfig(rootDir);
212
+
213
+ if (!config.agent) {
214
+ console.log(chalk.yellow('EHA is not initialized here. Nothing to remove.'));
146
215
  return;
147
216
  }
148
217
 
149
- printWorkflowSummary(result);
218
+ if (process.stdin.isTTY && process.stdout.isTTY) {
219
+ const confirmed = await promptConfirm(
220
+ `Remove EHA (agent: ${chalk.cyan(config.agent)}) from this project?`,
221
+ );
222
+ if (!confirmed) {
223
+ console.log('Aborted.');
224
+ return;
225
+ }
226
+ }
227
+
228
+ const result = removeProject({ rootDir });
229
+ console.log('');
230
+ console.log(chalk.green('✓ EHA removed.'));
231
+ for (const f of result.removedFiles) {
232
+ console.log(` ${chalk.gray(f)}`);
233
+ }
234
+ console.log('');
150
235
  });
151
236
 
152
237
  program
153
- .command('runtimes')
154
- .description('List supported runtimes and support tiers')
238
+ .command('doctor')
239
+ .description('Show EHA status: config, agent, and generated files')
155
240
  .action(() => {
156
- const runtimes = listSupportedRuntimes();
157
- console.log(chalk.blue('Supported runtimes'));
158
- for (const runtime of runtimes) {
159
- console.log(`- ${runtime.id}: ${runtime.supportTier} - ${runtime.description}`);
160
- }
241
+ const rootDir = resolveRootDir();
242
+ printDoctorSummary(doctor({ rootDir }));
161
243
  });
162
244
 
163
- program.parse(process.argv);
245
+ program.parseAsync(process.argv).catch((error) => {
246
+ console.error(chalk.red(error.message));
247
+ process.exitCode = 1;
248
+ });
@@ -0,0 +1,79 @@
1
+ # Architecture
2
+
3
+ Last update: YYYY-MM-DD
4
+
5
+ Status: [Proposed | Draft | Live | Deprecated | Archived]
6
+
7
+ ---
8
+
9
+ ## 1. Description
10
+ Briefly describe the purpose of this document and what it contains.
11
+
12
+ ## 2. Important
13
+ Notes of important findings or critical constraints. Can be empty.
14
+
15
+ ## 3. Table of Contents
16
+ [Generate a hyperlinked table of contents here containing ALL headings in this file (1 through N). Use standard markdown links, e.g., - [1. Description](#1-description)]
17
+
18
+ ## 4. Scope
19
+ The boundaries of what this document covers.
20
+
21
+ ## 5. Goals
22
+ What we aim to achieve with this specific document.
23
+
24
+ ## 6. Non Goals
25
+ What is explicitly excluded from the scope of this document.
26
+
27
+ ## 7. Tech Stack Overview
28
+ | Area | Choice | Notes |
29
+ | --- | --- | --- |
30
+ | Application or service | TBD | |
31
+ | Runtime or platform | TBD | |
32
+ | Storage | TBD | |
33
+ | External integrations | TBD | |
34
+
35
+ ## 8. Architecture Pattern
36
+ Describe architecture design pattern, system topology, component boundaries, and foundational control flow.
37
+
38
+ ## 9. System Flow
39
+ General overview of how the system work from start to end. Diagram or flowchart visual are preferred. Use mermaid.
40
+
41
+ ```mermaid
42
+ graph TD
43
+ A[Start] --> B{Decision}
44
+ B -- Yes --> C[Result 1]
45
+ B -- No --> D[Result 2]
46
+ ```
47
+
48
+ ## 10. Data Flow
49
+ General overview of inter-feature data flow, mapped against architectural patterns and system flow. Diagram or flowchart visual are preferred. Use mermaid.
50
+
51
+ ```mermaid
52
+ sequenceDiagram
53
+ participant User
54
+ participant System
55
+ User->>System: Data Request
56
+ System-->>User: Data Response
57
+ ```
58
+
59
+ ## 11. Tools Integration
60
+ Such as hardware or software or external api and relevant tools. Can be empty.
61
+
62
+ | Integration | Purpose | Kind | Notes |
63
+ | --- | --- | --- | --- |
64
+ | TBD | TBD | TBD | *Software/Hardware/APIs/Other* |
65
+
66
+ ## 12. Global Parameters and Constraints
67
+ Detail the system's global restrictions, such as performance requirements, caching policies, and error-handling mechanisms (e.g., "Supports offline execution for core features" or "Memory footprint restricted to 50MB").
68
+
69
+ ## 13. Architecture Decision Records (ADRs)
70
+ A collection of ADRs documenting the rationale behind technical decision (e.g., "Choosing React over Vue for state management flexibility" or "Adopting Domain-Driven Design to leverage bounded contexts").
71
+
72
+ ## 14. Success Metrics
73
+ How we measure if the goals of this document are achieved.
74
+
75
+ ## 15. Related Documents
76
+ [Link to related document](path) - Short brief note about why it's related (e.g., [Guidelines](path) - technical implementation rules).
77
+
78
+ ## 16. Open Questions
79
+ Unresolved architectural questions or assumptions. Can be empty.
@@ -0,0 +1,53 @@
1
+ # System Name Changelog
2
+
3
+ Last update: YYYY-MM-DD
4
+
5
+ Status: [Proposed | Draft | Live | Deprecated | Archived]
6
+
7
+ ---
8
+
9
+ ## 1. Description
10
+ Briefly describe the purpose of this document and what it contains.
11
+
12
+ ## 2. Important
13
+ Notes of important findings or critical constraints. Can be empty.
14
+
15
+ ## 3. Table of Contents
16
+ [Generate a hyperlinked table of contents here containing ALL headings in this file (1 through N). Use standard markdown links, e.g., - [1. Description](#1-description)]
17
+
18
+ ## 4. Scope
19
+ The boundaries of what this document covers.
20
+
21
+ ## 5. Goals
22
+ What we aim to achieve with this specific document.
23
+
24
+ ## 6. Non Goals
25
+ What is explicitly excluded from the scope of this document.
26
+
27
+ ## 7. [Unreleased]
28
+ ### 7.1. Added
29
+ TBD
30
+
31
+ ### 7.2. Changed
32
+ TBD
33
+
34
+ ### 7.3. Deprecated
35
+ TBD
36
+
37
+ ### 7.4. Removed
38
+ TBD
39
+
40
+ ### 7.5. Fixed
41
+ TBD
42
+
43
+ ### 7.6. Security
44
+ TBD
45
+
46
+ ## 8. Success Metrics
47
+ How we measure if the goals of this document are achieved.
48
+
49
+ ## 9. Related Documents
50
+ [Link to related document](path) - Short brief note about why it's related.
51
+
52
+ ## 10. Open Questions
53
+ Any unresolved questions or assumptions. Can be empty.
@@ -0,0 +1,46 @@
1
+ # Feature Inventory
2
+
3
+ Last update: YYYY-MM-DD
4
+
5
+ Status: [Proposed | Draft | Live | Deprecated | Archived]
6
+
7
+ ---
8
+
9
+ ## 1. Description
10
+ Briefly describe the purpose of this document and what it contains.
11
+
12
+ ## 2. Important
13
+ Notes of important findings or critical constraints. Can be empty.
14
+
15
+ ## 3. Table of Contents
16
+ [Generate a hyperlinked table of contents here containing ALL headings in this file (1 through N). Use standard markdown links, e.g., - [1. Description](#1-description)]
17
+
18
+ ## 4. Scope
19
+ The boundaries of what this document covers.
20
+
21
+ ## 5. Goals
22
+ What we aim to achieve with this specific document.
23
+
24
+ ## 6. Non Goals
25
+ What is explicitly excluded from the scope of this document.
26
+
27
+ ## 7. Feature Summary
28
+ High-level overview of the active feature set.
29
+
30
+ ## 8. Core Functions (Epic-level)
31
+ Major active functional blocks mapping directly to code.
32
+
33
+ ## 9. Sub-Functions (Task-level)
34
+ Granular interactions and capabilities currently live.
35
+
36
+ ## 10. Deprecated / Removed Features
37
+ Historical record of retired capabilities.
38
+
39
+ ## 11. Success Metrics
40
+ How we measure if the goals of this document are achieved.
41
+
42
+ ## 12. Related Documents
43
+ [Link to related document](path) - Short brief note about why it's related.
44
+
45
+ ## 13. Open Questions
46
+ Any unresolved questions or assumptions. Can be empty.
@@ -0,0 +1,60 @@
1
+ # Phases
2
+
3
+ Last update: YYYY-MM-DD
4
+
5
+ Status: [Proposed | Draft | Live | Deprecated | Archived]
6
+
7
+ ---
8
+
9
+ ## 1. Description
10
+ Briefly describe the purpose of this document and what it contains.
11
+
12
+ ## 2. Important
13
+ Notes of important findings or critical constraints. Can be empty.
14
+
15
+ ## 3. Table of Contents
16
+ [Generate a hyperlinked table of contents here containing ALL headings in this file (1 through N). Use standard markdown links, e.g., - [1. Description](#1-description)]
17
+
18
+ ## 4. Scope
19
+ The boundaries of what this document covers.
20
+
21
+ ## 5. Goals
22
+ What we aim to achieve with this specific document.
23
+
24
+ ## 6. Non Goals
25
+ What is explicitly excluded from the scope of this document.
26
+
27
+ ## 7. Overall Project Timeline
28
+ High-level estimate and major milestones. Visual timelines are preferred. Use mermaid.
29
+
30
+ ```mermaid
31
+ gantt
32
+ title Project Timeline
33
+ dateFormat YYYY-MM-DD
34
+ section Phase 1
35
+ Milestone 1 : 2024-01-01, 30d
36
+ section Phase 2
37
+ Milestone 2 : 2024-02-01, 30d
38
+ ```
39
+
40
+ ## 8. Phase Registry
41
+ Links to individual markdown files in the `phases/` directory.
42
+
43
+ ## 9. Sprint Tracker
44
+ ### 9.1. Current Sprint (Date Range)
45
+ TBD
46
+
47
+ ### 9.2. Active Tasks
48
+ TBD
49
+
50
+ ### 9.3. Blockers
51
+ TBD
52
+
53
+ ## 10. Success Metrics
54
+ How we measure if the goals of this document are achieved.
55
+
56
+ ## 11. Related Documents
57
+ [Link to related document](path) - Short brief note about why it's related.
58
+
59
+ ## 12. Open Questions
60
+ Any unresolved questions or assumptions. Can be empty.
@@ -0,0 +1,69 @@
1
+ # Product Requirements Document (PRD)
2
+
3
+ Last update: YYYY-MM-DD
4
+
5
+ Status: [Proposed | Draft | Live | Deprecated | Archived]
6
+
7
+ ---
8
+
9
+ ## 1. Description
10
+ Summarize the product, system, or major epic requirement set at a high level.
11
+
12
+ ## 2. Important
13
+ Notes of important findings or critical constraints. Can be empty.
14
+
15
+ ## 3. Table of Contents
16
+ [Generate a hyperlinked table of contents here containing ALL headings in this file (1 through N). Use standard markdown links, e.g., - [1. Description](#1-description)]
17
+
18
+ ## 4. Scope
19
+ The boundaries of what this document covers.
20
+
21
+ ## 5. Goals
22
+ What we aim to achieve with this specific document.
23
+
24
+ ## 6. Non Goals
25
+ What is explicitly excluded from the scope of this document.
26
+
27
+ ## 7. Vision Statement
28
+ A single, powerful sentence defining the ultimate end-state of the project.
29
+
30
+ ## 8. Target Personas
31
+ Specific user types (e.g., Admin, Guest) to give the team empathy.
32
+
33
+ ## 9. Core Business Value
34
+ The primary ROI, problem being solved, or operational improvement. Why does this project matter now?
35
+
36
+ ## 10. User Journeys & App Flow
37
+ Flowcharts mapping the user's path through the app. Use mermaid.
38
+
39
+ ```mermaid
40
+ journey
41
+ title User Journey Example
42
+ section Login
43
+ Enter credentials: 5: User
44
+ Authenticate: 5: System
45
+ ```
46
+
47
+ ## 11. Feature Workflows
48
+ Step-by-step logic flows for individual features. Use mermaid flowcharts to map complex feature logic.
49
+
50
+ ## 12. Functional Requirements
51
+ Detailed list of functional capabilities.
52
+
53
+ ## 13. Non-Functional Requirements
54
+ Reliability, performance, security, compliance, or UX expectations.
55
+
56
+ ## 14. Acceptance Criteria
57
+ Specific criteria to verify the requirements are met.
58
+
59
+ ## 15. External Dependencies & Partners
60
+ Third-party vendors and manual bottlenecks.
61
+
62
+ ## 16. Success Metrics
63
+ How we measure if the goals of this document are achieved.
64
+
65
+ ## 17. Related Documents
66
+ [Link to related document](path) - Short brief note about why it's related.
67
+
68
+ ## 18. Open Questions
69
+ Any unresolved questions or assumptions. Can be empty.