@karmaniverous/jeeves 0.5.12 → 0.6.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.
@@ -1,250 +0,0 @@
1
- # Spec-to-Code Development Practice
2
-
3
- This document defines how developer and AI assistant collaborate to design, build, and ship software using the spec-driven process. It is the authoritative reference for the iterative development practice used across all Jeeves platform components.
4
-
5
- ## 1. The Spec Format
6
-
7
- Every product has a single spec file (`spec.md`) that serves as the source of truth for what exists, what's being built, and what's been decided.
8
-
9
- ### Section Reference
10
-
11
- | Section | Purpose | Mutability |
12
- |---------|---------|------------|
13
- | **Overview** | What it is, what it isn't, boundaries | Stable after v1 |
14
- | **Vision** | Architecture, component relationships | Evolves slowly |
15
- | **Current Version** | What's shipped and working | **Locked** during Next Version design |
16
- | **Next Version** | Active design space — scope, architecture, decisions, dev plan | Active |
17
- | **Backlog** | Future work candidates | Append-only between versions |
18
- | **Open Questions** | Unresolved issues | Resolve inline, don't delete |
19
- | **Superseded Documents** | Historical record | Append-only |
20
-
21
- ### Locking Discipline
22
-
23
- - **Current Version** is frozen while Next Version is in progress. It reflects reality, not aspirations.
24
- - **Design Decisions** are append-only. Once recorded, a decision is immutable. To revise, add a new decision that supersedes the old one and cross-reference both.
25
- - **Dev Plan tasks** move from Incomplete to Complete. They are not deleted or renumbered.
26
-
27
- ### Decision Format
28
-
29
- Decisions are numbered sequentially and never reordered:
30
-
31
- ```markdown
32
- #### Decision N: {Title}
33
-
34
- {Description of the decision, rationale, alternatives considered, and consequences.
35
- Include enough context that someone reading this six months later understands WHY,
36
- not just WHAT.}
37
- ```
38
-
39
- Key principles:
40
- - **Append-only.** New decisions get the next number. Existing decisions are never edited.
41
- - **Supersession.** If Decision 5 replaces Decision 2, Decision 5 says "Supersedes Decision 2" and Decision 2 gets a note: "Superseded by Decision 5."
42
- - **Rationale is mandatory.** A decision without rationale is just an opinion. Include what was considered and why this path was chosen.
43
-
44
- ## 2. The 7-Stage Iterative Process
45
-
46
- ### Stage 1: High-Level Design
47
-
48
- **Goal:** Establish scope, architecture, and key design decisions for the next version.
49
-
50
- **Activities:**
51
- - Define what's in scope and what's explicitly out
52
- - Draft architecture (package structure, dependency model, key interfaces)
53
- - Record initial design decisions
54
- - Identify open questions
55
-
56
- **Output:** A populated Next Version section with Scope, Architecture, initial Decisions, and a skeletal Dev Plan.
57
-
58
- **Who drives:** Developer sets direction; assistant drafts, proposes, and challenges.
59
-
60
- ### Stage 2: Detailed Design & Dev Plan
61
-
62
- **Goal:** Break the architecture into concrete, sequenced tasks with explicit dependencies.
63
-
64
- **Activities:**
65
- - Decompose architecture into implementable tasks
66
- - Identify dependencies between tasks (which must complete before which)
67
- - Estimate complexity and sequence for optimal flow
68
- - Resolve open questions that block task definition
69
-
70
- **Output:** A complete Dev Plan (Incomplete table) with numbered tasks and dependency chains.
71
-
72
- **Convergence signal:** Every architectural element maps to at least one task. Every task has clear inputs and outputs. No circular dependencies.
73
-
74
- ### Stage 3: Implementation
75
-
76
- **Goal:** Execute the dev plan, task by task.
77
-
78
- **Activities:**
79
- - Work through tasks in dependency order
80
- - For each task: branch, implement, test, commit, push
81
- - Record any new decisions discovered during implementation
82
- - Move completed tasks from Incomplete to Complete
83
-
84
- **Workflow per task:**
85
- 1. Confirm task scope and acceptance criteria
86
- 2. Create branch (if not already on a feature branch)
87
- 3. Implement with tests
88
- 4. Run all quality checks (lint, typecheck, test)
89
- 5. Commit with meaningful message referencing the task number
90
- 6. Push immediately
91
-
92
- **Output:** Working code, passing tests, updated Dev Plan.
93
-
94
- ### Stage 4: Integration & Verification
95
-
96
- **Goal:** Verify that the implemented code meets the spec's verification checklist.
97
-
98
- **Activities:**
99
- - Run the full verification checklist from the spec
100
- - Fix any failures (new tasks if needed)
101
- - Integration testing across component boundaries
102
- - Performance and edge-case validation
103
-
104
- **Output:** All checklist items passing. Any new issues tracked as tasks.
105
-
106
- ### Stage 5: Documentation & Content
107
-
108
- **Goal:** Ensure all documentation reflects the implemented reality.
109
-
110
- **Activities:**
111
- - Update README, CHANGELOG, API docs
112
- - Verify that managed content (TOOLS.md sections, skills) reflects new capabilities
113
- - Update spec to reflect any implementation-time decisions
114
-
115
- **Output:** Documentation that matches code. No stale references.
116
-
117
- ### Stage 6: Release
118
-
119
- **Goal:** Ship the version.
120
-
121
- **Activities:**
122
- - Final quality gate pass (Stage 4 checklist, all green)
123
- - Version bump (semver)
124
- - Publish to npm (or equivalent)
125
- - Create GitHub release with changelog
126
- - Tag the commit
127
-
128
- **Gate:** Developer explicitly approves the release. The assistant prepares but does not execute without approval (Release & Deployment Gate).
129
-
130
- ### Stage 7: Release Reconciliation
131
-
132
- **Goal:** Update the spec to reflect the shipped reality and prepare for the next cycle.
133
-
134
- **Activities:**
135
- - Archive the spec as `spec-v{version}.md`
136
- - Update Current Version to match what shipped
137
- - Promote backlog items to the new Next Version (developer's choice)
138
- - Close resolved Open Questions
139
- - Add any new backlog items discovered during implementation
140
-
141
- **Output:** A clean spec ready for the next design cycle.
142
-
143
- ## 3. Convergence Loop Patterns
144
-
145
- Design and implementation are not strictly linear. Within each stage, the developer and assistant iterate until convergence.
146
-
147
- ### The Basic Loop
148
-
149
- ```
150
- Developer states intent
151
- → Assistant proposes design/implementation
152
- → Developer reviews, challenges, redirects
153
- → Assistant revises
154
- → Repeat until convergence
155
- → Record decision / commit code / move task
156
- ```
157
-
158
- ### Convergence Signals
159
-
160
- - **Design convergence:** No more open questions blocking the next stage. All stakeholders agree on the approach.
161
- - **Implementation convergence:** Tests pass, lint clean, typecheck clean, task acceptance criteria met.
162
- - **Spec convergence:** Every implemented feature maps to a spec section. Every spec assertion is verifiable.
163
-
164
- ### Anti-Patterns
165
-
166
- - **Premature implementation:** Writing code before the design is stable. If you're still debating the interface, don't implement it.
167
- - **Spec drift:** Implementing something different from what the spec says without updating the spec. The spec is the contract — if reality diverges, update the spec.
168
- - **Decision avoidance:** Leaving open questions open because they're hard. If a question blocks progress, escalate it — don't work around it.
169
- - **Gold plating:** Adding features not in the current scope. Backlog them. Ship what was planned.
170
-
171
- ## 4. Release Gate Passes
172
-
173
- Before any release, these gates must pass:
174
-
175
- ### Quality Gate
176
-
177
- - [ ] All tests pass
178
- - [ ] Zero lint errors AND zero lint warnings
179
- - [ ] Zero typecheck errors
180
- - [ ] All verification checklist items from the spec pass
181
-
182
- ### Documentation Gate
183
-
184
- - [ ] README reflects current capabilities
185
- - [ ] CHANGELOG updated with all changes
186
- - [ ] API documentation current
187
- - [ ] Breaking changes documented with migration guide
188
-
189
- ### Spec Gate
190
-
191
- - [ ] Dev Plan: all tasks in Complete
192
- - [ ] Open Questions: none blocking this release
193
- - [ ] Verification Checklist: all items checked
194
- - [ ] Design Decisions: no unrecorded decisions from implementation
195
-
196
- ### Release Gate (requires explicit developer approval)
197
-
198
- - [ ] Version bumped appropriately (semver)
199
- - [ ] Published to registry
200
- - [ ] GitHub release created
201
- - [ ] Spec archived as `spec-v{version}.md`
202
-
203
- ## 5. Conversation Engine Patterns
204
-
205
- The spec-to-code process is a conversation between developer and AI assistant. These patterns describe how that conversation works effectively.
206
-
207
- ### The Proposal Pattern
208
-
209
- The assistant's default mode for design work:
210
-
211
- 1. **Understand** the developer's intent (ask clarifying questions if ambiguous)
212
- 2. **Propose** a concrete design with rationale
213
- 3. **Present** trade-offs and alternatives considered
214
- 4. **Wait** for feedback before proceeding
215
-
216
- Never assume silence is approval. Explicit confirmation before recording decisions or beginning implementation.
217
-
218
- ### The Checkpoint Pattern
219
-
220
- At natural boundaries (end of a stage, completion of a complex task, before a risky action):
221
-
222
- 1. **Summarize** what was accomplished
223
- 2. **State** the current position in the process
224
- 3. **Propose** the next step
225
- 4. **Confirm** before proceeding
226
-
227
- This keeps the developer oriented and prevents runaway work in the wrong direction.
228
-
229
- ### The Discovery Pattern
230
-
231
- When implementation reveals something the design didn't anticipate:
232
-
233
- 1. **Stop** — don't improvise a solution
234
- 2. **Report** what was discovered and why it matters
235
- 3. **Propose** options (including "do nothing and backlog it")
236
- 4. **Record** the decision if one is made
237
- 5. **Continue** with the updated understanding
238
-
239
- Discoveries during implementation are normal and valuable. They become design decisions, not silent workarounds.
240
-
241
- ### The Escalation Pattern
242
-
243
- When the assistant hits something it can't resolve:
244
-
245
- 1. **State** what was attempted
246
- 2. **Explain** why it's blocked
247
- 3. **Present** the options as understood
248
- 4. **Ask** for direction
249
-
250
- Never go dark. Never guess. The developer always has more context than the assistant about business priorities, political constraints, and acceptable trade-offs.
@@ -1,177 +0,0 @@
1
- ---
2
- title: "{package-name} — Product Specification"
3
- date: YYYY-MM-DD
4
- status: Pre-version (design)
5
- authors:
6
- - {author}
7
- spec-version: "{next-version}"
8
- previous: "{previous-spec-filename}"
9
- ---
10
-
11
- # {package-name} — Product Specification
12
-
13
- <!-- Spec Discipline:
14
- 1. Current Version stays locked during Next Version design
15
- 2. Next Version is the active design space
16
- 3. When Next Version is implemented: freeze the spec, run the verification checklist
17
- 4. On green: archive spec as spec-v{next}.md, update Current Version to match reality,
18
- promote backlog items to Next Version
19
- -->
20
-
21
- ## Spec Discipline
22
-
23
- 1. **Current Version** stays locked during Next Version design
24
- 2. Next Version is the active design space
25
- 3. When Next Version is implemented: freeze the spec, run the checklist
26
- 4. On green: archive spec as `spec-v{next}.md`, update Current Version to match reality, promote backlog items to Next Version
27
-
28
- ## Spec Hygiene
29
-
30
- - **Frontmatter is mandatory.** Every spec must have `version`, `date`, and `status` fields in the YAML frontmatter. The `status` field tracks the spec lifecycle: `Pre-version (design)`, `In progress`, `Complete`, `Archived`.
31
- - **Decisions are numbered.** Use sequential numbering (`Decision 1`, `Decision 2`, ...) so they can be cross-referenced from dev plan tasks, other decisions, and external documents. Never renumber — append only.
32
- - **Dev plan tasks have dependency ordering.** Every task in the dev plan table must have a `Depends On` column referencing prerequisite task numbers (or `—` for none). Tasks should be ordered so dependencies come first. This enforces implementation sequencing and makes parallel work visible.
33
-
34
- ## 1. Overview
35
-
36
- <!-- What is this package? What problem does it solve? What are its boundaries?
37
- Include: repo, npm package name, license, CLI command (if any).
38
- Clearly state what it IS and what it IS NOT. -->
39
-
40
- **Repo:** `@karmaniverous/{package-name}`
41
- **npm:** `@karmaniverous/{package-name}`
42
- **License:** BSD-3-Clause
43
-
44
- ### What {package-name} Is
45
-
46
- - {primary purpose}
47
-
48
- ### What {package-name} Is Not
49
-
50
- - {explicit non-goals}
51
-
52
- ## 2. Vision
53
-
54
- <!-- High-level architecture diagram (PlantUML recommended) and narrative.
55
- How does this component fit into the broader system?
56
- Include a component/capability table if relevant. -->
57
-
58
- ### Platform Components
59
-
60
- <!-- If this is part of a larger platform, list all components with roles and versions. -->
61
-
62
- | Component | Role | Current Version |
63
- |-----------|------|-----------------|
64
- | **{component}** | {role} | {version} |
65
-
66
- ## 3. Current Version
67
-
68
- <!-- Lock this section once Next Version design begins.
69
- Document what is currently shipped and working.
70
- If no version has shipped yet: "No current version. {package-name} has not yet been built." -->
71
-
72
- No current version. {package-name} has not yet been built.
73
-
74
- ## 4. Next Version: {version}
75
-
76
- | Package | Version |
77
- |---------|---------|
78
- | `@karmaniverous/{package-name}` | {version} |
79
-
80
- ### Scope
81
-
82
- <!-- What's in scope for this version? What's explicitly out of scope?
83
- Be precise — this is the contract. -->
84
-
85
- **In scope:**
86
- 1. {feature}
87
-
88
- **Out of scope (Phase 2+):**
89
- - {deferred feature}
90
-
91
- ### Architecture
92
-
93
- <!-- Detailed technical design. Include:
94
- - Package/directory structure
95
- - Dependency model
96
- - Key interfaces and APIs
97
- - Data flow diagrams
98
- - Configuration schema -->
99
-
100
- ### Design Decisions
101
-
102
- <!-- Numbered for reference. New decisions append; existing decisions are immutable once recorded.
103
- Format:
104
-
105
- #### Decision N: {Title}
106
-
107
- {Description of the decision, rationale, alternatives considered, and consequences.}
108
-
109
- Each decision is a permanent record. If a decision needs to be revised, add a new decision
110
- that supersedes it and note the supersession in both. -->
111
-
112
- #### Decision 1: {Title}
113
-
114
- {Decision description and rationale.}
115
-
116
- ### Dev Plan
117
-
118
- <!-- Two tables: Complete and Incomplete. Tasks are numbered for reference.
119
- Dependencies reference task numbers. Move tasks from Incomplete to Complete
120
- as they are implemented. -->
121
-
122
- #### Complete
123
-
124
- <!-- | # | Task | Depends On |
125
- |---|------|------------|
126
- | 1 | {completed task} | — | -->
127
-
128
- *No tasks completed yet.*
129
-
130
- #### Incomplete
131
-
132
- | # | Task | Depends On |
133
- |---|------|------------|
134
- | 1 | {task description} | — |
135
- | 2 | {task description} | 1 |
136
-
137
- ### Release Sequence
138
-
139
- <!-- Ordered list of release steps. What gets published first?
140
- What can be parallel? What must be serial? -->
141
-
142
- 1. {step}
143
-
144
- ### Verification Checklist
145
-
146
- <!-- Concrete, testable assertions that must all pass before the version ships.
147
- Format: - [ ] {assertion} -->
148
-
149
- - [ ] {verification item}
150
-
151
- ## 5. Backlog
152
-
153
- <!-- Future work not scoped to any specific version. Items here are candidates
154
- for promotion to the next Next Version. Brief descriptions only —
155
- detailed design happens when promoted. -->
156
-
157
- - **{Feature name}** — {brief description}
158
-
159
- ## 6. Open Questions
160
-
161
- <!-- Numbered questions that need resolution. When resolved, strike through
162
- and note the resolution inline (don't delete — the history is valuable).
163
- Format:
164
- 1. ~~{Question}~~ Resolved by Decision N: {brief summary}
165
- 2. {Open question still needing resolution} -->
166
-
167
- 1. {question}
168
-
169
- ## 7. Superseded Documents
170
-
171
- <!-- Documents that this spec replaces or incorporates. Keep for historical reference.
172
- Format:
173
- | Document | Date | What It Covered |
174
- |----------|------|-----------------|
175
- | {filename} | YYYY-MM-DD | {description} | -->
176
-
177
- *No superseded documents.*
@@ -1,102 +0,0 @@
1
- ### Tool Hierarchy
2
-
3
- When searching for information across indexed paths, **always use `watcher_search` before filesystem commands** (`exec`, `grep`, `find`). The semantic index covers the full indexed corpus and surfaces related files you may not have considered.
4
-
5
- Use `watcher_scan` (no embeddings, no query string) for structural queries: file enumeration, staleness checks, domain listing, counts.
6
-
7
- Direct filesystem access is for **acting on** search results, not bypassing them.
8
-
9
- ### Shell Scripting
10
-
11
- Default to `node -e` or `.js` scripts for `exec` calls. PowerShell corrupts multi-byte UTF-8 characters and mangles escaping. Use PowerShell only for Windows service management, registry operations, and similar platform-specific tasks.
12
-
13
- ### File Bridge for External Repos
14
-
15
- When editing files outside the workspace, use the bridge pattern: copy in → edit the workspace copy → bridge out. Never write temp patch scripts. The workspace is the authoritative working directory.
16
-
17
- ### Gateway Self-Destruction Warning
18
-
19
- ⚠️ Any command that stops the gateway **stops the assistant**. Never run `openclaw gateway stop` or `openclaw gateway restart` without explicit owner approval. When approved, it must be the **absolute last action** — all other work must be complete first, all messages sent, all files saved.
20
-
21
- ### Messaging
22
-
23
- **Same-channel replies:** Don't use the `message` tool. It fires immediately, jumping ahead of streaming narration. Just write text as your response.
24
-
25
- **Cross-channel sends:** Use the `message` tool with an explicit `target` to send to a different channel or DM.
26
-
27
- ### Slack File Downloads
28
-
29
- To download a Slack-hosted file, first try the `message` tool's `download-file` action. If that fails, fall back to a direct HTTP fetch using the bot token:
30
-
31
- ```js
32
- fetch(url_private_download, {
33
- headers: { Authorization: 'Bearer ' + botToken },
34
- });
35
- ```
36
-
37
- The bot token is at `channels.slack.accounts.default.botToken` in `openclaw.json`.
38
-
39
- Never tell the user a file can't be downloaded until both methods have been tried.
40
-
41
- ### Plugin Lifecycle
42
-
43
- ```bash
44
- # Platform bootstrap (content seeding)
45
- npx @karmaniverous/jeeves install
46
-
47
- # Component plugin install
48
- npx @karmaniverous/jeeves-{component}-openclaw install
49
-
50
- # Component plugin uninstall
51
- npx @karmaniverous/jeeves-{component}-openclaw uninstall
52
-
53
- # Platform teardown (remove managed sections)
54
- npx @karmaniverous/jeeves uninstall
55
- ```
56
-
57
- Never manually edit `~/.openclaw/extensions/`. Always use the CLI commands above.
58
-
59
- ### Reference Templates
60
-
61
- {{#if templatePath}}
62
- Reference templates are available at `{{templatePath}}`:
63
-
64
- | Template | Purpose |
65
- |----------|---------|
66
- | `spec.md` | Skeleton for new product specifications — all section headers, decision format, dev plan format |
67
- | `spec-to-code-guide.md` | The spec-to-code development practice — 7-stage iterative process, convergence loops, release gates |
68
-
69
- Read these templates when creating new specs, onboarding to new projects, or when asked about the development process.
70
- {{else}}
71
- > Reference templates not yet installed. Run `npx @karmaniverous/jeeves install` to seed templates.
72
- {{/if}}
73
-
74
- ### Post-Upgrade Maintenance
75
-
76
- After updating OpenClaw (`npm install -g openclaw@latest` or equivalent), reinstall all Jeeves component plugins to repair install state:
77
-
78
- ```bash
79
- npx @karmaniverous/jeeves install
80
- npx @karmaniverous/jeeves-runner-openclaw install
81
- npx @karmaniverous/jeeves-watcher-openclaw install
82
- npx @karmaniverous/jeeves-server-openclaw install
83
- npx @karmaniverous/jeeves-meta-openclaw install
84
- ```
85
-
86
- Then restart the gateway. Plugin installers copy dist files and patch config; reinstalling after an OpenClaw update ensures the extensions directory stays consistent.
87
-
88
- ### Source Code Preference
89
-
90
- {{#if devRepos}}
91
- When investigating, debugging, or analyzing Jeeves components, always read TypeScript source from dev repos — never compiled `dist/` from the global npm install. Dev repos:
92
-
93
- | Component | Dev Repo |
94
- |-----------|----------|
95
- {{#each devRepos}}
96
- | {{@key}} | `{{this}}` |
97
- {{/each}}
98
-
99
- Built code is minified, harder to reason about, and wastes context. Always `git pull` before analysis.
100
- {{else}}
101
- > Dev repo paths not configured. Add `core.devRepos` to `jeeves.config.json` to enable source code preference guidance.
102
- {{/if}}