@slowdini/slow-powers-opencode 0.1.0 → 0.1.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.
- package/README.md +23 -39
- package/bootstrap.md +50 -4
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -33,6 +33,26 @@ Slow-powers integrates directly into your agent's session, providing a highly di
|
|
|
33
33
|
Installation differs by harness. If you use more than one, install
|
|
34
34
|
Slow-powers separately for each.
|
|
35
35
|
|
|
36
|
+
### Install with your agent
|
|
37
|
+
|
|
38
|
+
Don't want to look up the steps? Open the harness you want Slow-powers on and
|
|
39
|
+
paste this prompt to its agent — it'll read the guide, work out which harness
|
|
40
|
+
it's in, and do the install for you:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
Install the "slow-powers" plugin for the coding-agent harness you are currently
|
|
44
|
+
running in. Read the installation guide at
|
|
45
|
+
https://github.com/slowdini/slow-powers#installation, determine which harness
|
|
46
|
+
this is (Claude Code, Codex CLI, or OpenCode), and follow the matching steps —
|
|
47
|
+
run the documented marketplace/install commands for Claude Code or Codex, or add
|
|
48
|
+
the package to the `plugin` array in opencode.json for OpenCode. Then tell me
|
|
49
|
+
exactly what you changed and what I need to do to finish (e.g. restart the
|
|
50
|
+
session so the skills load).
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The per-harness instructions below are the source of truth the agent follows —
|
|
54
|
+
and the reference for installing by hand.
|
|
55
|
+
|
|
36
56
|
### Claude Code
|
|
37
57
|
|
|
38
58
|
```
|
|
@@ -65,13 +85,7 @@ Add Slow-powers to the `plugin` array in your `opencode.json` (global or project
|
|
|
65
85
|
}
|
|
66
86
|
```
|
|
67
87
|
|
|
68
|
-
This installs the latest version from npm.
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"plugin": ["github:slowdini/slow-powers#main"]
|
|
73
|
-
}
|
|
74
|
-
```
|
|
88
|
+
This installs the latest published version from npm.
|
|
75
89
|
|
|
76
90
|
## The Core Execution Utilities
|
|
77
91
|
|
|
@@ -110,7 +124,7 @@ Flat layout — skills and assets live at root, harness-specific integration liv
|
|
|
110
124
|
- `tests/` — Cross-cutting and harness-specific tests
|
|
111
125
|
- `.claude-plugin/` — Claude Code plugin manifest and hooks
|
|
112
126
|
- `.codex-plugin/` — OpenAI Codex plugin manifest
|
|
113
|
-
- `opencode/` — OpenCode plugin
|
|
127
|
+
- `opencode/` — OpenCode plugin
|
|
114
128
|
- `.claude-plugin/marketplace.json` — Claude Code marketplace registry
|
|
115
129
|
- `package.json` — OpenCode plugin manifest + dev tooling
|
|
116
130
|
- `harness-parity-check.md` — Instructions for an agent in any harness to audit feature gaps and prep to close one
|
|
@@ -125,7 +139,7 @@ Releases are cut from `dev` and tagged from `main`:
|
|
|
125
139
|
commits to `dev`, and opens a `dev → main` PR.
|
|
126
140
|
3. Review the release PR (full test matrix runs on it) and merge.
|
|
127
141
|
4. Merging to `main` automatically tags `vX.Y.Z`, creates the GitHub release,
|
|
128
|
-
and publishes `@slowdini/slow-powers-opencode` to npm
|
|
142
|
+
and publishes `@slowdini/slow-powers-opencode` to npm.
|
|
129
143
|
Notes come from the release PR body, or auto-generated if empty.
|
|
130
144
|
|
|
131
145
|
See `.github/workflows/` for the workflow definitions.
|
|
@@ -139,36 +153,6 @@ Actions**:
|
|
|
139
153
|
|--------|------|---------|---------------------|
|
|
140
154
|
| `RELEASE_PR_TOKEN` | GitHub PAT (fine-grained or classic) | `release-pr.yml` | Push to `dev` (Contents: write) and open PRs (Pull requests: write). Required so the release PR triggers CI — PRs opened by the default `GITHUB_TOKEN` do not. |
|
|
141
155
|
|
|
142
|
-
The npm publish needs **no secret**. `release.yml` publishes via npm
|
|
143
|
-
[trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC): auth is
|
|
144
|
-
minted per run from the workflow's `permissions: id-token: write`, and provenance
|
|
145
|
-
is generated automatically. `GITHUB_TOKEN` (auto-provided by Actions) covers the
|
|
146
|
-
tag push and `gh release create`.
|
|
147
|
-
|
|
148
|
-
### npm trusted publishing setup (one-time)
|
|
149
|
-
|
|
150
|
-
Trusted publishing is configured on the package, so the package must exist on npm
|
|
151
|
-
first. Bootstrap it once:
|
|
152
|
-
|
|
153
|
-
1. **Create the package with a manual first publish** from a maintainer machine.
|
|
154
|
-
The `prepublishOnly` guard expects CI, so set `CI=true`:
|
|
155
|
-
```bash
|
|
156
|
-
npm login
|
|
157
|
-
CI=true npm publish --access public
|
|
158
|
-
```
|
|
159
|
-
This publishes the current `package.json` version (e.g. `0.1.0`) and creates
|
|
160
|
-
`@slowdini/slow-powers-opencode` on npm.
|
|
161
|
-
2. **Configure the trusted publisher** at npmjs.com → the package → Settings →
|
|
162
|
-
Trusted publishing → GitHub Actions:
|
|
163
|
-
- Organization or user: `slowdini`
|
|
164
|
-
- Repository: `slow-powers`
|
|
165
|
-
- Workflow filename: `release.yml` (filename only, not a path)
|
|
166
|
-
- Environment: leave blank
|
|
167
|
-
- Allowed actions: `npm publish`
|
|
168
|
-
3. **Subsequent releases are fully automated and tokenless.** Cut the next release
|
|
169
|
-
at a higher version (the Release PR workflow enforces strictly-greater); merging
|
|
170
|
-
to `main` publishes via OIDC with provenance.
|
|
171
|
-
|
|
172
156
|
## License
|
|
173
157
|
|
|
174
158
|
MIT — see [`LICENSE`](./LICENSE).
|
package/bootstrap.md
CHANGED
|
@@ -1,12 +1,58 @@
|
|
|
1
1
|
# Instructions for using Slow-powers Skills
|
|
2
2
|
|
|
3
|
+
<EXTREMELY-IMPORTANT>
|
|
4
|
+
If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.
|
|
5
|
+
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
|
6
|
+
This is not negotiable. This is not optional. You cannot rationalize your way out of this.
|
|
7
|
+
</EXTREMELY-IMPORTANT>
|
|
8
|
+
|
|
3
9
|
These skills are quality gates on procedures you already run. They don't grant abilities — they enhance how you execute work you already know how to do.
|
|
4
10
|
|
|
5
|
-
When you reach a gate moment — about to code, debug, claim done, finish a branch — the matching skill's description surfaces it. Load it then, even if your procedure already feels complete. That "feels complete" is the gate's target.
|
|
11
|
+
When you reach a gate moment — about to code, hand off a plan, debug, claim done, finish a branch — the matching skill's description surfaces it. Load it then, even if your procedure already feels complete. That "feels complete" is the gate's target.
|
|
6
12
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
## The Rule
|
|
14
|
+
|
|
15
|
+
**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.
|
|
16
|
+
|
|
17
|
+
```dot
|
|
18
|
+
digraph skill_flow {
|
|
19
|
+
"User message received" [shape=doublecircle];
|
|
20
|
+
"Might any skill apply?" [shape=diamond];
|
|
21
|
+
"Invoke skill mechanism" [shape=box];
|
|
22
|
+
"Announce: 'Using [skill] to [purpose]'" [shape=box];
|
|
23
|
+
"Has checklist?" [shape=diamond];
|
|
24
|
+
"Create todo per item with persistent task tracker" [shape=box];
|
|
25
|
+
"Follow skill exactly" [shape=box];
|
|
26
|
+
"Respond (including clarifications)" [shape=doublecircle];
|
|
27
|
+
|
|
28
|
+
"User message received" -> "Might any skill apply?";
|
|
29
|
+
"Might any skill apply?" -> "Invoke skill mechanism" [label="yes, even 1%"];
|
|
30
|
+
"Might any skill apply?" -> "Respond (including clarifications)" [label="definitely not"];
|
|
31
|
+
"Invoke skill mechanism" -> "Announce: 'Using [skill] to [purpose]'";
|
|
32
|
+
"Announce: 'Using [skill] to [purpose]'" -> "Has checklist?";
|
|
33
|
+
"Has checklist?" -> "Create todo per item with persistent task tracker" [label="yes"];
|
|
34
|
+
"Has checklist?" -> "Follow skill exactly" [label="no"];
|
|
35
|
+
"Create todo per item with persistent task tracker" -> "Follow skill exactly";
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Red Flags
|
|
40
|
+
|
|
41
|
+
These thoughts mean STOP — you're rationalizing:
|
|
42
|
+
|
|
43
|
+
| Thought | Reality |
|
|
44
|
+
|---------|---------|
|
|
45
|
+
| "This is just a simple question" | Questions are tasks. Check for skills. |
|
|
46
|
+
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
|
|
47
|
+
| "I can check git/files quickly" | Files lack conversation context. Check for skills. |
|
|
48
|
+
| "Let me gather information first" | Skills tell you HOW to gather information. |
|
|
49
|
+
| "This doesn't need a formal skill" | If a skill exists, use it. |
|
|
50
|
+
| "I remember this skill" | Skills evolve. Read current version. |
|
|
51
|
+
| "This doesn't count as a task" | Action = task. Check for skills. |
|
|
52
|
+
| "The skill is overkill" | Simple things become complex. Use it. |
|
|
53
|
+
| "I'll just do this one thing first" | Check BEFORE doing anything. |
|
|
54
|
+
| "This feels productive" | Undisciplined action wastes time. Skills prevent this. |
|
|
55
|
+
| "I know what that means" | Knowing the concept ≠ using the skill. Invoke it. |
|
|
10
56
|
|
|
11
57
|
## Instruction Priority
|
|
12
58
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slowdini/slow-powers-opencode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Slow-powers — structured development workflows for coding agents (TDD, debugging, verification, git hygiene)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./opencode/plugins/slow-powers.js",
|
|
@@ -45,11 +45,10 @@
|
|
|
45
45
|
"evals:grade": "bun run skills/evaluating-skills/runner/grade.ts --skill-dir ./skills",
|
|
46
46
|
"evals:aggregate": "bun run skills/evaluating-skills/runner/aggregate.ts --skill-dir ./skills",
|
|
47
47
|
"evals:promote-baseline": "bun run skills/evaluating-skills/runner/promote-baseline.ts --skill-dir ./skills",
|
|
48
|
-
"version": "bun scripts/bump-version.ts",
|
|
49
48
|
"check": "biome check --write .",
|
|
50
49
|
"check:ci": "biome check --error-on-warnings .",
|
|
51
50
|
"typecheck": "tsc --noEmit",
|
|
52
|
-
"
|
|
51
|
+
"prepare": "node .husky/install.mjs",
|
|
53
52
|
"prepublishOnly": "node -e \"if (process.env.CI !== 'true') { console.error('Publishing should be done via CI'); process.exit(1); }\""
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|