@dezkareid/osddt 1.3.0 → 1.3.2
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/AGENTS.md +13 -2
- package/README.md +2 -2
- package/dist/index.js +20 -20
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -138,7 +138,7 @@ All commands available via `npx @dezkareid/osddt <command>`:
|
|
|
138
138
|
| `@dezkareid/osddt setup` | Generate agent command files for Claude and Gemini |
|
|
139
139
|
| `@dezkareid/osddt setup --agents <list> --repo-type <type>` | Non-interactive setup (for CI/scripted environments) |
|
|
140
140
|
| `@dezkareid/osddt meta-info` | Output current branch and date as JSON |
|
|
141
|
-
| `@dezkareid/osddt done <feature-name>`
|
|
141
|
+
| `@dezkareid/osddt done <feature-name> --dir <project-path>` | Move `working-on/<feature>` to `done/<feature>` |
|
|
142
142
|
|
|
143
143
|
#### `osddt setup` options
|
|
144
144
|
|
|
@@ -163,7 +163,7 @@ Templates are generated by `npx @dezkareid/osddt setup` and placed in each agent
|
|
|
163
163
|
| `osddt.plan` | Create a technical implementation plan from a specification |
|
|
164
164
|
| `osddt.tasks` | Generate actionable tasks from an implementation plan |
|
|
165
165
|
| `osddt.implement` | Execute tasks from the task list one by one |
|
|
166
|
-
| `osddt.done` |
|
|
166
|
+
| `osddt.done` | Resolve project path, verify tasks, and move the feature to done |
|
|
167
167
|
|
|
168
168
|
#### Template Workflow
|
|
169
169
|
|
|
@@ -214,6 +214,17 @@ osddt.start ──┘
|
|
|
214
214
|
2. Checks for an existing `working-on/<feature-name>/` folder — offers **Resume** or **Abort** if found, otherwise creates it.
|
|
215
215
|
3. Researches the topic (codebase exploration, external references) and writes `osddt.research.md`.
|
|
216
216
|
|
|
217
|
+
#### osddt.done behaviour
|
|
218
|
+
|
|
219
|
+
- **Input**: A feature name or branch name identifying the feature to close.
|
|
220
|
+
- **Actions performed by the agent**:
|
|
221
|
+
1. Reads `.osddtrc` to resolve the project path (single vs monorepo). For monorepos, asks the user which package.
|
|
222
|
+
2. Derives the feature name from the input (same rules as other commands — last segment of a branch name or kebab-cased slug, subject to the 30-character limit). Must match the folder under `working-on/`.
|
|
223
|
+
3. Confirms all tasks in `osddt.tasks.md` are checked off (`- [x]`).
|
|
224
|
+
4. Runs `npx @dezkareid/osddt done <feature-name> --dir <project-path>` to move the folder.
|
|
225
|
+
|
|
226
|
+
Note: the `osddt done` CLI command does **not** read `.osddtrc` — project path resolution is the agent's responsibility, handled in step 1 above.
|
|
227
|
+
|
|
217
228
|
### Template Data Convention
|
|
218
229
|
|
|
219
230
|
When a template needs dynamic information (e.g. current branch, date, repo config), **do not pass it as a build-time argument**. Instead:
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Other spec driven development tool but for monorepo
|
|
|
8
8
|
| `@dezkareid/osddt setup` | Generate agent command files for Claude and Gemini |
|
|
9
9
|
| `@dezkareid/osddt setup --agents <list> --repo-type <type>` | Non-interactive setup (for CI/scripted environments) |
|
|
10
10
|
| `@dezkareid/osddt meta-info` | Output current branch and date as JSON |
|
|
11
|
-
| `@dezkareid/osddt done <feature-name>`
|
|
11
|
+
| `@dezkareid/osddt done <feature-name> --dir <project-path>` | Move `working-on/<feature>` to `done/<feature>` |
|
|
12
12
|
|
|
13
13
|
### `osddt setup` options
|
|
14
14
|
|
|
@@ -51,7 +51,7 @@ osddt.start ──┘
|
|
|
51
51
|
| `osddt.plan` | Create a technical implementation plan from a specification |
|
|
52
52
|
| `osddt.tasks` | Generate actionable tasks from an implementation plan |
|
|
53
53
|
| `osddt.implement` | Execute tasks from the task list one by one |
|
|
54
|
-
| `osddt.done` |
|
|
54
|
+
| `osddt.done` | Resolve project path, verify tasks, and move the feature to done |
|
|
55
55
|
|
|
56
56
|
Generated files are placed in:
|
|
57
57
|
|
package/dist/index.js
CHANGED
|
@@ -192,19 +192,21 @@ Run the following command to write the feature specification:
|
|
|
192
192
|
- If it does not exist, proceed using only the requirements provided in ${args}.
|
|
193
193
|
2. Analyze the requirements provided in ${args}
|
|
194
194
|
3. Identify the core problem being solved
|
|
195
|
-
4. Define the scope, constraints, and acceptance criteria
|
|
195
|
+
4. Define the scope, user-facing constraints, and acceptance criteria
|
|
196
196
|
5. Write the specification to \`osddt.spec.md\` in the working directory
|
|
197
197
|
|
|
198
198
|
## Specification Format
|
|
199
199
|
|
|
200
|
+
The spec should describe **what** the feature does and **why**, from a product and user perspective. Do **not** include implementation details, technology choices, or technical architecture — those belong in the plan.
|
|
201
|
+
|
|
200
202
|
The spec should include:
|
|
201
|
-
- **Overview**: What and why
|
|
202
|
-
- **Requirements**: Functional
|
|
203
|
-
- **Scope**: What is in and out of scope
|
|
204
|
-
- **Acceptance Criteria**: Clear, testable criteria
|
|
205
|
-
- **Open Questions**:
|
|
203
|
+
- **Overview**: What the feature is and why it is needed
|
|
204
|
+
- **Requirements**: Functional requirements only — what the system must do, expressed as user-observable behaviours
|
|
205
|
+
- **Scope**: What is in and out of scope, described in product terms
|
|
206
|
+
- **Acceptance Criteria**: Clear, testable criteria written from a user or business perspective
|
|
207
|
+
- **Open Questions**: Ambiguities about desired behaviour or product decisions to resolve
|
|
206
208
|
|
|
207
|
-
> If \`osddt.research.md\` was found, add a **Research Summary** section that briefly references the key insights and constraints it identified.
|
|
209
|
+
> If \`osddt.research.md\` was found, add a **Research Summary** section that briefly references the key insights and user-facing constraints it identified.
|
|
208
210
|
|
|
209
211
|
## Arguments
|
|
210
212
|
|
|
@@ -332,17 +334,22 @@ Once all tasks are checked off, run the following command to mark the feature as
|
|
|
332
334
|
description: 'Mark a feature as done and move it from working-on to done',
|
|
333
335
|
body: (args) => `## Instructions
|
|
334
336
|
|
|
335
|
-
1.
|
|
336
|
-
|
|
337
|
+
1. Resolve the project path:
|
|
338
|
+
- Read \`.osddtrc\` from the repository root.
|
|
339
|
+
- If \`repoType\` is \`"single"\`: the project path is the repository root.
|
|
340
|
+
- If \`repoType\` is \`"monorepo"\`: ask the user which package to work on (e.g. \`packages/my-package\`), then use \`<repo-root>/<package>\` as the project path.
|
|
341
|
+
2. Derive the feature name from ${args} using the same rules as the other commands (last segment of a branch name, or a kebab-cased slug — subject to the 30-character limit). This must match the folder name under \`working-on/\`.
|
|
342
|
+
3. Confirm all tasks in \`osddt.tasks.md\` are checked off (\`- [x]\`)
|
|
343
|
+
4. Run the following command to move the feature folder from \`working-on\` to \`done\`:
|
|
337
344
|
|
|
338
345
|
\`\`\`
|
|
339
|
-
npx @dezkareid/osddt done
|
|
346
|
+
npx @dezkareid/osddt done <feature-name> --dir <project-path>
|
|
340
347
|
\`\`\`
|
|
341
348
|
|
|
342
349
|
The command will automatically prefix the destination folder name with today's date in \`YYYY-MM-DD\` format.
|
|
343
350
|
For example, \`working-on/feature-a\` will be moved to \`done/YYYY-MM-DD-feature-a\`.
|
|
344
351
|
|
|
345
|
-
|
|
352
|
+
5. Report the result of the command, including the full destination path
|
|
346
353
|
|
|
347
354
|
## Arguments
|
|
348
355
|
|
|
@@ -531,16 +538,9 @@ function todayPrefix() {
|
|
|
531
538
|
return `${yyyy}-${mm}-${dd}`;
|
|
532
539
|
}
|
|
533
540
|
async function runDone(featureName, cwd) {
|
|
534
|
-
const
|
|
535
|
-
if (!(await fs.pathExists(configPath))) {
|
|
536
|
-
console.error('Error: .osddtrc not found. Run `osddt setup` first.');
|
|
537
|
-
process.exit(1);
|
|
538
|
-
}
|
|
539
|
-
await fs.readJson(configPath);
|
|
540
|
-
const projectPath = cwd;
|
|
541
|
-
const src = path.join(projectPath, 'working-on', featureName);
|
|
541
|
+
const src = path.join(cwd, 'working-on', featureName);
|
|
542
542
|
const destName = `${todayPrefix()}-${featureName}`;
|
|
543
|
-
const dest = path.join(
|
|
543
|
+
const dest = path.join(cwd, 'done', destName);
|
|
544
544
|
if (!(await fs.pathExists(src))) {
|
|
545
545
|
console.error(`Error: working-on/${featureName} does not exist.`);
|
|
546
546
|
process.exit(1);
|