spec-feature 1.0.7 → 1.0.8

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 CHANGED
@@ -4,203 +4,98 @@
4
4
 
5
5
  **Turn your idea into a ready development plan in minutes!**
6
6
 
7
- `Spec Feature` is your personal assistant for creating technical specifications. Simply describe what you want to build, and get a complete specification, technical plan, and task list for your development team. All documents are created by AI from a single description.
7
+ Create technical specifications, plans, and tasks for your development team using AI from a single description.
8
8
 
9
- ## 🎯 Why use Spec Feature?
9
+ ## 🎯 Benefits
10
10
 
11
- ### **⭐ Clear project start**
12
- The specification becomes the single source of truth — no more guessing about what you intended to build.
13
-
14
- ### **🤝 Fewer misunderstandings between human and AI**
15
- Clear "contracts" / specifications help avoid "vibe coding" — when AI "guesses" your intentions and often builds something not quite what you need.
16
-
17
- ### **📚 Architecture and decisions are documented**
18
- "Why did we choose this solution?" will be captured in the specification, not in emails, chats, or someone's head.
19
-
20
- ### **✅ Controlled task breakdown**
21
- Small tasks are easier to review, test, and correct — fewer "big commits that are hard to understand".
22
-
23
- ### **🔄 Flexibility and evolution**
24
- Specifications are not "dead" — they can be updated, refactored, and revised when requirements change.
25
-
26
- ### **🤖 AI assistant integration**
27
- Specification + plan + tasks give AI "context" and boundaries within which it can generate code more safely.
11
+ Clear project start • 🤝 Fewer misunderstandings • 📚 Documented architecture • ✅ Controlled tasks • 🔄 Easy updates • 🤖 Better AI integration
28
12
 
29
13
  ## ⚡ Quick Start
30
14
 
31
- ### 🚀 Using npx (recommended)
32
-
33
- The easiest way to get started with Spec Feature:
34
-
35
15
  ```bash
36
- # Initialize Spec Feature in current directory
16
+ # Initialize in current directory
37
17
  npx spec-feature init
38
18
 
39
- # Initialize with custom folder name
19
+ # Or with custom folder name
40
20
  npx spec-feature init my-project-docs
41
21
  ```
42
22
 
43
- This will create a `spec` folder (or your custom name) with the complete Spec Feature structure ready to use.
44
-
45
- ### 🌍 Global installation
46
-
47
- For frequent use, install Spec Feature globally:
48
-
49
- ```bash
50
- npm install -g spec-feature
51
-
52
- # Now you can use it anywhere
53
- spec-feature init
54
- spec-feature init my-features
23
+ Creates the Spec Feature structure inside `spec/` by default, or inside the folder name you provide.
24
+
25
+ ## 📁 Structure
26
+
27
+ ```mermaid
28
+ graph TD
29
+ A[spec/] --> B[README.md]
30
+ A --> C[feature.md]
31
+ A --> D[core/]
32
+ A --> E[features/]
33
+
34
+ D --> F[spec.md]
35
+ D --> G[plan.md]
36
+ D --> H[tasks.md]
37
+ D --> I[verify.md]
38
+ D --> J[hotfix.md]
39
+
40
+ E --> K[user-auth/]
41
+ K --> L[spec.md]
42
+ K --> M[plan.md]
43
+ K --> N[tasks.md]
44
+ K --> O[verify-report.md]
55
45
  ```
56
46
 
57
- ### 📦 Local installation
47
+ **Templates** (core/) **Features** (features/)
58
48
 
59
- To install Spec Feature in your project:
49
+ ## 🎬 Workflow
60
50
 
61
- ```bash
62
- npm install spec-feature
63
-
64
- # Add to package.json scripts
65
- {
66
- "scripts": {
67
- "init-spec": "spec-feature init",
68
- "init-docs": "spec-feature init documentation"
69
- }
70
- }
71
- ```
51
+ **Send these prompts to your AI assistant** (Claude, Cursor, Copilot, etc.) to create, execute, and update features.
72
52
 
73
- ## 📁 Project Structure `/spec`
74
-
75
- ### 🏗️ Initial structure (created during initialization)
76
- ```
77
- /spec
78
- ├── README.md ← this guide
79
- ├── feature.md ← main template for launching spec-feature
80
- └── core ← base templates for specific stages
81
- ├── spec.md ← specification structure
82
- ├── plan.md ← technical plan structure
83
- ├── tasks.md ← task list structure
84
- ├── verify.md ← verification report structure
85
- └── hotfix.md ← hotfix and update structure
86
- ```
53
+ ### 1️⃣ Create Feature
87
54
 
88
- ### 🎯 Full structure (after creating the first feature)
89
55
  ```
90
- /spec
91
- ├── README.md ← this guide
92
- ├── feature.md ← main template for launching spec-feature
93
- ├── core ← base templates for specific stages
94
- │ ├── spec.md ← specification structure
95
- │ ├── plan.md ← technical plan structure
96
- │ ├── tasks.md ← task list structure
97
- │ ├── verify.md ← verification report structure
98
- │ └── hotfix.md ← hotfix and update structure
99
- └── features ← folder with feature materials (created automatically)
100
- ├── <feature> ← specific feature folder (e.g., `user-auth`)
101
- │ ├── spec.md ← current specification
102
- │ ├── plan.md ← technical plan
103
- │ ├── tasks.md ← implementation checklist
104
- │ └── verify-report.md (optional) — verification log
105
- └── ... ← other features created from templates
56
+ Use the template from spec/feature.md.
57
+ #feature-name# Your description here
106
58
  ```
107
59
 
108
- > **💡 Tip:** The `features` folder is created automatically when creating the first feature through `spec/feature.md`.
109
-
110
- ## 🎬 Getting Started
111
-
112
- To create a feature specification, use the `spec/feature.md` template with any AI Assistant that can create folders and files (such as `Claude Code`, `Gemini CLI`, `Codex CLI`, `Copilot`, `Cursor`, etc.).
113
-
114
- ### 📝 Input parameter format
60
+ Format: `#feature# description` creates `spec/features/feature-name/` with 3 files:
115
61
 
116
- Pass parameters in one line in the format `#<feature># <context>`:
117
-
118
- - the value between the first two `#` symbols is used as **FEATURE** and determines the feature folder (`#payments#` → `spec/features/payments`);
119
- - everything following the second `#` is **CONTEXT**. It can span multiple lines, include lists, links, and additional clarifications.
62
+ ```mermaid
63
+ flowchart LR
64
+ A[feature.md template] --> B[spec.md]
65
+ A --> C[plan.md]
66
+ A --> D[tasks.md]
67
+ ```
120
68
 
121
- ### 🚀 Usage example
69
+ ### 2️⃣ Execute Tasks
122
70
 
123
71
  ```
124
- Use the template from spec/feature.md.
125
- #user-auth# Need to add user authentication via email and password. The user should be able to register, log in, and recover their password. Integration with the existing notification system is mandatory.
72
+ Execute all tasks in spec/features/{FEATURE}/tasks.md
126
73
  ```
127
74
 
128
- ### ✨ What happens next
129
-
130
- The AI assistant generates three Markdown documents in sequence:
131
- - `spec/features/{FEATURE}/spec.md` specification describing value and user scenarios.
132
- - `spec/features/{FEATURE}/plan.md` technical plan based on specification and context.
133
- - `spec/features/{FEATURE}/tasks.md` checklist of tasks for implementation and testing.
134
-
135
- For example, the above command will create the `spec/features/user-auth/` folder with three files: `spec.md`, `plan.md`, and `tasks.md`.
136
-
137
- ## 🚀 Launching Task Execution
138
-
139
- After creating the specification and plan, you can proceed with implementation:
140
-
141
- 1. **🎯 Launch task execution**
142
- ```
143
- Execute all tasks in `spec/features/{FEATURE}/tasks.md`
144
- ```
145
-
146
- 2. **⚡ What happens during execution**
147
- - AI assistant sequentially executes tasks from the checklist
148
- - Each completed task is marked as finished
149
- - When problems arise, the assistant may request clarifications
150
- - Progress can be tracked by updating checkboxes in `tasks.md`
151
-
152
- 3. **📝 Example for user-auth feature**
153
- ```
154
- Execute all tasks in `spec/features/user-auth/tasks.md`
155
- ```
156
-
157
- ## ✅ What Happens After Task Execution
158
-
159
- After completing all tasks, automatic verification is launched:
160
-
161
- 1. **🔍 Automatic verification**
162
- - AI assistant uses the `spec/core/verify.md` template
163
- - Compares implemented functionality with requirements from `spec.md`
164
- - Checks compliance with the technical plan from `plan.md`
165
-
166
- 2. **📊 Verification results**
167
- - A report `spec/features/{FEATURE}/verify-report.md` is created
168
- - Task statuses in `tasks.md` are updated (✅ completed / ❌ requires refinement)
169
- - Found discrepancies and recommendations are recorded
170
-
171
- 3. **📋 Verification report content**
172
- - Summary of completed tasks
173
- - List of found problems
174
- - Recommendations for fixes
175
- - Assessment of feature readiness for production
176
-
177
- ## 🔄 Updating Existing Feature
75
+ ```mermaid
76
+ flowchart TD
77
+ A[tasks.md] --> B[Task 1]
78
+ B --> C[Task 2]
79
+ C --> D[Task N]
80
+ D --> E[All Complete]
81
+ E --> F[Auto Verification]
82
+ F --> G[verify-report.md]
83
+ ```
178
84
 
179
- To update an existing feature, reuse `spec/feature.md`, specifying the name of the required feature folder and a list of changes:
85
+ ### 3️⃣ Update Feature
180
86
 
181
- **📝 Update example:**
182
87
  ```
183
88
  Use the template from spec/feature.md.
184
- #user-auth# Add two-factor authentication (2FA) via SMS. The user should be able to enable/disable 2FA in profile settings. Integration with existing SMS provider.
89
+ #feature-name# New requirements
185
90
  ```
186
91
 
187
- The AI assistant will correctly overwrite `spec.md`, `plan.md`, and `tasks.md`, preserving the structure and updating the content for new requirements.
92
+ Overwrites spec.md, plan.md, tasks.md with updated content.
188
93
 
189
94
  ## 🛠️ Troubleshooting
190
95
 
191
- ### 🚨 Common problems and solutions
192
-
193
- **❌ Problem:** AI assistant doesn't create feature folder
194
- - **✅ Solution:** Make sure you're using the correct format `#feature# context` and that the assistant has file creation permissions
195
-
196
- **❌ Problem:** Tasks are executed in wrong order
197
- - **✅ Solution:** Check task numbering in `tasks.md` and reorder if necessary
198
-
199
- **❌ Problem:** Verification doesn't launch automatically
200
- - **✅ Solution:** Make sure all tasks in `tasks.md` are marked as completed, then manually launch verification:
201
- ```
202
- Use the template from spec/core/verify.md to verify spec/features/{FEATURE}/
203
- ```
204
-
205
- **❌ Problem:** Conflict when updating existing feature
206
- - **✅ Solution:** Create a backup of current files before updating or use git to track changes
96
+ | Problem | Solution |
97
+ |---------|----------|
98
+ | No feature folder created | Check format `#feature# context` |
99
+ | Wrong task order | Reorder numbers in tasks.md |
100
+ | Verification not launched | All tasks must be checked, or run manually: `Use template from spec/core/verify.md to verify spec/features/{FEATURE}/` |
101
+ | Update conflicts | Use git to track changes |
package/bin/cli.js CHANGED
@@ -7,48 +7,56 @@ import { fileURLToPath } from "url";
7
7
  const __filename = fileURLToPath(import.meta.url);
8
8
  const __dirname = path.dirname(__filename);
9
9
 
10
+ const DEFAULT_FOLDER = "spec";
10
11
  const args = process.argv.slice(2);
11
12
  const command = args[0];
12
13
 
13
14
  if (command === "init") {
14
15
  const targetDir = process.cwd();
15
- const folderName = args[1] || "spec"; // Use provided folder name or default to "spec"
16
+ const folderName = args[1] || DEFAULT_FOLDER;
16
17
  const destinationDir = path.join(targetDir, folderName);
17
- const templatesDir = path.join(__dirname, "../spec");
18
+ const templateDir = path.join(__dirname, "..", DEFAULT_FOLDER);
18
19
 
19
- function copyRecursive(src, dest) {
20
+ if (!fs.existsSync(templateDir)) {
21
+ console.error(`❌ Template directory not found: ${templateDir}`);
22
+ process.exit(1);
23
+ }
24
+
25
+ function copyRecursive(src, dest, relative = "") {
20
26
  const stat = fs.statSync(src);
21
-
27
+
22
28
  if (stat.isDirectory()) {
23
29
  if (!fs.existsSync(dest)) {
24
30
  fs.mkdirSync(dest, { recursive: true });
31
+ if (relative) {
32
+ console.log(`Created: ${folderName}/${relative}`);
33
+ }
25
34
  }
26
- fs.readdirSync(src).forEach(file => {
27
- copyRecursive(path.join(src, file), path.join(dest, file));
35
+
36
+ fs.readdirSync(src).forEach(entry => {
37
+ const nextRelative = relative ? `${relative}/${entry}` : entry;
38
+ copyRecursive(path.join(src, entry), path.join(dest, entry), nextRelative);
28
39
  });
29
- } else {
30
- fs.copyFileSync(src, dest);
40
+ return;
41
+ }
42
+
43
+ if (fs.existsSync(dest)) {
44
+ console.log(`Skipped (already exists): ${folderName}/${relative}`);
45
+ return;
31
46
  }
47
+
48
+ fs.copyFileSync(src, dest);
49
+ console.log(`Created: ${folderName}/${relative}`);
32
50
  }
33
51
 
34
- // Create the destination directory if it doesn't exist
35
52
  if (!fs.existsSync(destinationDir)) {
36
53
  fs.mkdirSync(destinationDir, { recursive: true });
37
54
  }
38
55
 
39
- fs.readdirSync(templatesDir).forEach(file => {
40
- const src = path.join(templatesDir, file);
41
- const dest = path.join(destinationDir, file);
42
-
43
- if (!fs.existsSync(dest)) {
44
- copyRecursive(src, dest);
45
- console.log(`Created: ${folderName}/${file}`);
46
- } else {
47
- console.log(`Skipped (already exists): ${folderName}/${file}`);
48
- }
49
- });
50
-
56
+ copyRecursive(templateDir, destinationDir);
51
57
  console.log(`✅ Spec Feature initialized in '${folderName}' folder!`);
52
- } else {
53
- console.log("Usage: npx spec-feature init [folder-name]");
58
+ process.exit(0);
54
59
  }
60
+
61
+ console.log("Usage: npx spec-feature init [folder-name]");
62
+ process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-feature",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "bin": {
5
5
  "spec-feature": "./bin/cli.js"
6
6
  },
@@ -11,6 +11,7 @@ Template automates feature maintenance after release: records hotfixes and synch
11
11
 
12
12
  - Work only in the `spec/features/{FEATURE}/` directory: allowed to edit `spec.md`, `plan.md`, and `tasks.md`.
13
13
  - Do not create new files in the feature folder (including `hotfix.md` and verification reports).
14
+ - Do not generate application code, configuration snippets, scripts, or patches while documenting the hotfix.
14
15
  - Preserve the structure of existing documents: do not delete sections, do not leave empty headers and hints from templates.
15
16
  - All changes should consider requirements from specification and plan, maintaining consistency of terms and references.
16
17
  - Actual task state must be reflected in `tasks.md`: do not allow desynchronization between checkboxes and actual state.
package/spec/core/plan.md CHANGED
@@ -10,6 +10,7 @@ Template helps format the feature implementation plan in the **spec-feature** pr
10
10
  **General rules**
11
11
 
12
12
  - Work only with specification files within `/spec` directory: automatically create necessary directories and files.
13
+ - Do not generate application code, configuration snippets, scripts, or patches while preparing the implementation plan.
13
14
  - Use `spec/core/spec.md` as the specification source on which the plan is formed.
14
15
  - Use `spec/features/{FEATURE}/spec.md` as additional context. If the file is unavailable, continue working based on **CONTEXT**.
15
16
  - Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). If a section is not applicable — explicitly write `Not required — reason: <explanation>`.
package/spec/core/spec.md CHANGED
@@ -10,6 +10,7 @@ Template helps describe a feature before implementation in the **spec-feature**
10
10
  **General rules**
11
11
 
12
12
  - Work only with specification files within `/spec` directory: automatically create necessary directories and files.
13
+ - Do not generate application code, configuration snippets, scripts, or patches while preparing the specification.
13
14
  - Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). The final document should not contain hints, examples, or `...` markers.
14
15
  - The specification header should contain a clear feature name (adapt the **FEATURE** value if necessary).
15
16
  - The structure from the template below needs to be filled with content: theses, lists, and tables are allowed, empty sections are not.
@@ -10,12 +10,14 @@ Template helps form a task list for feature implementation in the **spec-feature
10
10
  **General rules**
11
11
 
12
12
  - Work only with specification files within `/spec` directory: automatically create necessary directories and files.
13
+ - Do not generate application code, configuration snippets, scripts, or patches while preparing the task list.
13
14
  - Use `spec/core/spec.md` and `spec/core/plan.md` as base sources of specification and plan when preparing tasks.
14
15
  - Use `spec/features/{FEATURE}/spec.md` and `spec/features/{FEATURE}/plan.md` as additional context. If any file is missing, continue working based on available materials and **CONTEXT**.
15
16
  - Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). The final document should not contain hints, examples, or `...` markers.
16
17
  - Each task is a checkbox with result formulation and description of mandatory checks/tests.
17
18
  - If a direction is not required, explicitly indicate under the corresponding subheading `Not required — reason: <explanation>`.
18
19
  - After filling the document, mark self-check checkboxes in the "Instruction execution control" section.
20
+ - Do not start executing tasks until a separate user request explicitly references `spec/features/{FEATURE}/tasks.md`; ignore execution requests without that reference.
19
21
 
20
22
  **What needs to be revealed in tasks**
21
23
 
@@ -10,6 +10,7 @@ Template helps format the results of automatic task execution verification and m
10
10
  **General rules**
11
11
 
12
12
  - Work only with specification files: do not create code and new directories.
13
+ - Do not generate application code, configuration snippets, scripts, or patches during verification.
13
14
  - **REQUIRED:** Always create `spec/features/{FEATURE}/verify-report.md` file as the main output of verification process.
14
15
  - Use `spec/features/{FEATURE}/spec.md`, `plan.md`, and `tasks.md` as source data for verification.
15
16
  - Check tasks sequentially: after successful verification, mark the corresponding checkbox in `spec/features/{FEATURE}/tasks.md` as `[x]`; when discrepancies are found, leave `[ ]` and record details in the report file.
package/spec/feature.md CHANGED
@@ -12,11 +12,13 @@ Parameters are passed in one line in the format `#<feature># <context>` without
12
12
  **General rules**
13
13
 
14
14
  - Work only with specification files in the `spec/features/{FEATURE}` directory: automatically create necessary directories and files within `/spec` folder only.
15
+ - Do not generate application code, configuration snippets, scripts, or patches while preparing specification artifacts.
15
16
  - If the **FEATURE** value matches an already existing feature, update its current materials instead of creating a new folder and use the `spec/core/hotfix.md` template when making changes.
16
17
  - Within one request, create/update three separate Markdown documents: `spec.md`, `plan.md`, and `tasks.md` in the appropriate directory structure.
17
18
  - Automatically create the directory structure `spec/features/{FEATURE}/` if it doesn't exist.
18
19
  - All sections from templates must be filled with content: do not leave empty headers, placeholders, or hint comments.
19
20
  - Use sequence: first specification, then plan (based on specification), then task list (based on specification and plan).
21
+ - Implementation work starts only after an explicit user request that references `spec/features/{FEATURE}/tasks.md`; ignore requests to execute tasks if they do not contain that reference.
20
22
  - Follow KISS, DRY, and YAGNI requirements: solutions should be implementable without excessive complexity and duplication.
21
23
 
22
24
  **Steps**
package/ui/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # Nuxt Minimal Starter
2
+
3
+ Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
4
+
5
+ ## Setup
6
+
7
+ Make sure to install dependencies:
8
+
9
+ ```bash
10
+ # npm
11
+ npm install
12
+
13
+ # pnpm
14
+ pnpm install
15
+
16
+ # yarn
17
+ yarn install
18
+
19
+ # bun
20
+ bun install
21
+ ```
22
+
23
+ ## Development Server
24
+
25
+ Start the development server on `http://localhost:3000`:
26
+
27
+ ```bash
28
+ # npm
29
+ npm run dev
30
+
31
+ # pnpm
32
+ pnpm dev
33
+
34
+ # yarn
35
+ yarn dev
36
+
37
+ # bun
38
+ bun run dev
39
+ ```
40
+
41
+ ## Production
42
+
43
+ Build the application for production:
44
+
45
+ ```bash
46
+ # npm
47
+ npm run build
48
+
49
+ # pnpm
50
+ pnpm build
51
+
52
+ # yarn
53
+ yarn build
54
+
55
+ # bun
56
+ bun run build
57
+ ```
58
+
59
+ Locally preview production build:
60
+
61
+ ```bash
62
+ # npm
63
+ npm run preview
64
+
65
+ # pnpm
66
+ pnpm preview
67
+
68
+ # yarn
69
+ yarn preview
70
+
71
+ # bun
72
+ bun run preview
73
+ ```
74
+
75
+ Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
package/ui/app/app.vue ADDED
@@ -0,0 +1,6 @@
1
+ <template>
2
+ <div>
3
+ <NuxtRouteAnnouncer />
4
+ <NuxtWelcome />
5
+ </div>
6
+ </template>
@@ -0,0 +1,6 @@
1
+ // @ts-check
2
+ import withNuxt from './.nuxt/eslint.config.mjs'
3
+
4
+ export default withNuxt(
5
+ // Your custom configs here
6
+ )
@@ -0,0 +1,13 @@
1
+ // https://nuxt.com/docs/api/configuration/nuxt-config
2
+ export default defineNuxtConfig({
3
+ compatibilityDate: '2025-07-15',
4
+ devtools: { enabled: true },
5
+
6
+ modules: [
7
+ '@nuxt/eslint',
8
+ '@nuxt/image',
9
+ '@nuxt/scripts',
10
+ '@nuxt/fonts',
11
+ '@nuxt/icon'
12
+ ]
13
+ })
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "ui",
3
+ "type": "module",
4
+ "private": true,
5
+ "scripts": {
6
+ "build": "nuxt build",
7
+ "dev": "nuxt dev",
8
+ "generate": "nuxt generate",
9
+ "preview": "nuxt preview",
10
+ "postinstall": "nuxt prepare"
11
+ },
12
+ "dependencies": {
13
+ "@nuxt/eslint": "1.9.0",
14
+ "@nuxt/fonts": "0.11.4",
15
+ "@nuxt/icon": "2.1.0",
16
+ "@nuxt/image": "1.11.0",
17
+ "@nuxt/scripts": "0.13.0",
18
+ "@unhead/vue": "^2.0.3",
19
+ "eslint": "^9.0.0",
20
+ "nuxt": "^4.2.0",
21
+ "vue": "^3.5.22",
22
+ "vue-router": "^4.6.3"
23
+ }
24
+ }
Binary file
@@ -0,0 +1,2 @@
1
+ User-Agent: *
2
+ Disallow:
@@ -0,0 +1,18 @@
1
+ {
2
+ // https://nuxt.com/docs/guide/concepts/typescript
3
+ "files": [],
4
+ "references": [
5
+ {
6
+ "path": "./.nuxt/tsconfig.app.json"
7
+ },
8
+ {
9
+ "path": "./.nuxt/tsconfig.server.json"
10
+ },
11
+ {
12
+ "path": "./.nuxt/tsconfig.shared.json"
13
+ },
14
+ {
15
+ "path": "./.nuxt/tsconfig.node.json"
16
+ }
17
+ ]
18
+ }