spotme 0.1.0
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 +131 -0
- package/dist/index.js +13024 -0
- package/dist/opencode.js +13024 -0
- package/dist/pi.js +258275 -0
- package/package.json +65 -0
- package/src/engine.ts +162 -0
- package/src/index.ts +2 -0
- package/src/opencode.ts +156 -0
- package/src/pi.ts +141 -0
- package/src/prompts.ts +152 -0
- package/src/types.ts +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD036 -->
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./imgs/spotme.png", width=50%>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<h6 align="center"><i>Gym mode for agentic coding</i></h6>
|
|
8
|
+
|
|
9
|
+
<h1></h1>
|
|
10
|
+
|
|
11
|
+
Instead of writing 100% of the code for you, the agent scaffolds a logical unit, hands it off, watches you implement it, and reviews your work before resuming.
|
|
12
|
+
|
|
13
|
+
> "Keep your edge."
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="./imgs/spotme.gif", width=80%>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
**Heavy AI usage makes you stupid.**
|
|
22
|
+
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers/">Science</a>. <a href="https://arxiv.org/abs/2511.02922v2">says</a>. <a href="https://arxiv.org/abs/2506.08872">so</a>.
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="./imgs/doge.jpg", width=40%>
|
|
29
|
+
</p>
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="https://www.anthropic.com/research/AI-assistance-coding-skills">Anthropic too</a>.
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
When **BIG BAD AI COMPANY™** warns us about the negative effects of its own product, we should probably pay attention.
|
|
35
|
+
|
|
36
|
+
Much like sitting on your ass all day makes you weak and sad, keeping your brain in powersave mode all day makes you lazy and dumb.
|
|
37
|
+
|
|
38
|
+
The first you fix by going to the gym.
|
|
39
|
+
|
|
40
|
+
The second you fix by using SpotMe.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## How it works
|
|
45
|
+
|
|
46
|
+
1. Enable SpotMe at the start of a session: `/spotme:on [lite|medium|hard] [--every N]`
|
|
47
|
+
2. Every N code-writing actions, the agent scaffolds the next unit instead of completing it
|
|
48
|
+
3. You implement the marked section (`# SPOTME: ...`) directly in your editor
|
|
49
|
+
4. `/spotme:done` → agent checks your work and gives brief, calibrated feedback
|
|
50
|
+
5. Agent resumes the original task
|
|
51
|
+
|
|
52
|
+
## Commands
|
|
53
|
+
|
|
54
|
+
| Command | Description |
|
|
55
|
+
|---------|-------------|
|
|
56
|
+
| `/spotme:on [lite\|medium\|hard] [--every N]` | Enable gym mode. Default: medium, every 2 |
|
|
57
|
+
| `/spotme:off` | Disable — agent writes code normally |
|
|
58
|
+
| `/spotme:status` | Show current state |
|
|
59
|
+
| `/spotme:rep` | Request an exercise on-demand |
|
|
60
|
+
| `/spotme:done` | Submit your implementation for review |
|
|
61
|
+
| `/spotme:hint` | Get one targeted hint |
|
|
62
|
+
| `/spotme:solve` | Concede — agent completes the exercise |
|
|
63
|
+
| `/spotme:skip` | Skip this exercise, no note |
|
|
64
|
+
|
|
65
|
+
## Difficulty levels
|
|
66
|
+
|
|
67
|
+
| Level | Agent writes | You write |
|
|
68
|
+
|-------|-------------|-----------|
|
|
69
|
+
| `lite` | Signature + docstring + structure | Just the body |
|
|
70
|
+
| `medium` | Signature + `# SPOTME:` spec comment | All logic |
|
|
71
|
+
| `hard` | Plain English spec comment only | Everything |
|
|
72
|
+
|
|
73
|
+
## Install
|
|
74
|
+
|
|
75
|
+
### OpenCode
|
|
76
|
+
|
|
77
|
+
Copy or symlink into your project's plugin directory:
|
|
78
|
+
```bash
|
|
79
|
+
# Project-level
|
|
80
|
+
ln -s /path/to/spotme .opencode/plugins/spotme
|
|
81
|
+
|
|
82
|
+
# Global
|
|
83
|
+
ln -s /path/to/spotme ~/.config/opencode/plugins/spotme
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Or add to `opencode.json` once published to npm:
|
|
87
|
+
```json
|
|
88
|
+
{ "plugin": ["spotme"] }
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The `src/opencode.ts` file is the plugin entry point.
|
|
92
|
+
|
|
93
|
+
### Pi
|
|
94
|
+
|
|
95
|
+
Copy or symlink into your extensions directory:
|
|
96
|
+
```bash
|
|
97
|
+
# Project-level
|
|
98
|
+
ln -s /path/to/spotme .pi/extensions/spotme
|
|
99
|
+
|
|
100
|
+
# Global
|
|
101
|
+
ln -s /path/to/spotme ~/.pi/agent/extensions/spotme
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Or install as a Pi package once published:
|
|
105
|
+
```bash
|
|
106
|
+
pi install npm:spotme
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The `src/pi.ts` file is the extension entry point. Pi auto-discovers it via the `pi.extensions` field in `package.json`.
|
|
110
|
+
|
|
111
|
+
### Skill only (any harness that supports AgentSkills)
|
|
112
|
+
|
|
113
|
+
Copy `SKILL.md` into your harness's skills directory. This gives the prompt layer without the automated tool interception — commands still work, but the counter-based trigger won't fire automatically.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Development status
|
|
118
|
+
|
|
119
|
+
**v0.1 — working draft, not yet validated**
|
|
120
|
+
|
|
121
|
+
Open questions:
|
|
122
|
+
- OpenCode: `command.executed` event shape (args parsing may need adjustment)
|
|
123
|
+
- Pi: `ctx.cwd` availability in tool/command handlers
|
|
124
|
+
- Both: scoped test running after `/spotme:done`
|
|
125
|
+
- Both: branch cleanup strategy after review
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Name
|
|
130
|
+
|
|
131
|
+
The agent is your **spotter**. It sets up the lift, stands by while you push, catches you if you call for help. The work is yours.
|