tap-the-sign 0.2.0 → 0.2.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/README.md +27 -44
- package/docs/REQUIREMENTS.md +1 -1
- package/hooks-bin/constants.mjs +2 -3
- package/hooks-bin/run-hook.mjs +3 -6
- package/package.json +4 -4
- package/src/constants.mjs +2 -3
- package/src/hooks/runner.mjs +3 -6
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<img width="500" height="740" alt="tapthesign 2" src="https://github.com/user-attachments/assets/c938c158-d1b4-4cc2-90b5-05bdd5fc7db5" />
|
|
2
|
+
|
|
1
3
|
# Tap the Sign
|
|
2
4
|
|
|
3
5
|
Auto **thermo sign-off** on your plan before you build.
|
|
@@ -30,7 +32,7 @@ On Pass 3: Thermo-nuclear subagent on final diff; zero HIGH/MID.
|
|
|
30
32
|
|
|
31
33
|
3. After the plan is updated with the pre-flight section, the hook stops (no infinite loop).
|
|
32
34
|
|
|
33
|
-
If the thermo skill is missing, planning still works; the auto follow-up
|
|
35
|
+
If the thermo skill is missing, planning still works; the hook auto-sends a **chat follow-up** with install instructions (also logged to the Hooks output channel).
|
|
34
36
|
|
|
35
37
|
## Quick start
|
|
36
38
|
|
|
@@ -39,72 +41,53 @@ npx tap-the-sign install && npx tap-the-sign install-thermo && npx tap-the-sign
|
|
|
39
41
|
npx tap-the-sign doctor
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
**Bun:**
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
bunx tap-the-sign install && bunx tap-the-sign install-thermo && bunx tap-the-sign on
|
|
46
|
-
```
|
|
47
|
-
|
|
48
44
|
Use Plan mode in Cursor, Claude Code, or Codex.
|
|
49
45
|
|
|
50
|
-
## Install
|
|
51
|
-
|
|
52
|
-
### 1. npm / npx
|
|
46
|
+
## Install
|
|
53
47
|
|
|
54
48
|
```bash
|
|
55
|
-
npx tap-the-sign install # all IDEs, project-local
|
|
49
|
+
npx tap-the-sign install # all IDEs, project-local (default)
|
|
56
50
|
npx tap-the-sign install --global # user-global (~/.cursor, ~/.claude, ~/.codex)
|
|
57
|
-
npx tap-the-sign install-thermo # skill only (recommended)
|
|
51
|
+
npx tap-the-sign install-thermo # thermo skill only (recommended)
|
|
58
52
|
npx tap-the-sign install --no-codex # subset of IDEs
|
|
59
53
|
```
|
|
60
54
|
|
|
61
|
-
|
|
55
|
+
From a git clone:
|
|
62
56
|
|
|
63
57
|
```bash
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
git clone https://github.com/john-prem/tap-the-sign.git
|
|
59
|
+
cd tap-the-sign
|
|
60
|
+
./install.sh
|
|
61
|
+
npx tap-the-sign install-thermo && npx tap-the-sign on
|
|
67
62
|
```
|
|
68
63
|
|
|
69
|
-
|
|
64
|
+
Or one-liner:
|
|
70
65
|
|
|
71
66
|
```bash
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
./install.bun.sh
|
|
75
|
-
bun src/cli.mjs install-thermo && bun src/cli.mjs on
|
|
67
|
+
curl -fsSL https://raw.githubusercontent.com/john-prem/tap-the-sign/main/install.sh | bash
|
|
68
|
+
npx tap-the-sign install-thermo && npx tap-the-sign on
|
|
76
69
|
```
|
|
77
70
|
|
|
78
|
-
|
|
71
|
+
Requires **Node.js 18+**.
|
|
79
72
|
|
|
80
|
-
###
|
|
73
|
+
### Git plugin (IDE-native)
|
|
81
74
|
|
|
82
75
|
| IDE | Install |
|
|
83
76
|
|-----|---------|
|
|
84
|
-
| **Cursor** | `/add-plugin
|
|
77
|
+
| **Cursor** | `/add-plugin john-prem/tap-the-sign` |
|
|
85
78
|
| **Claude Code** | `/plugin marketplace add …` then `/plugin install tap-the-sign@…` |
|
|
86
79
|
| **Codex** | Install plugin; trust hooks via `/hooks` |
|
|
87
80
|
|
|
88
|
-
Then run `tap-the-sign on` (or `/tap-the-sign-on` in Cursor). Plugins ship wiring, not default-on.
|
|
89
|
-
|
|
90
|
-
**Thermo skill:** `tap-the-sign install-thermo` or `/add-plugin cursor-team-kit` (full plugin + subagent for Pass 3).
|
|
91
|
-
|
|
92
|
-
### 4. curl / install.sh
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
curl -fsSL https://raw.githubusercontent.com/your-org/tap-the-sign/main/install.sh | bash
|
|
96
|
-
# then:
|
|
97
|
-
npx tap-the-sign install-thermo && npx tap-the-sign on
|
|
98
|
-
```
|
|
81
|
+
Then run `npx tap-the-sign on` (or `/tap-the-sign-on` in Cursor). Plugins ship wiring, not default-on.
|
|
99
82
|
|
|
100
|
-
|
|
83
|
+
**Thermo skill:** `npx tap-the-sign install-thermo` or `/add-plugin cursor-team-kit` (full plugin + subagent for Pass 3).
|
|
101
84
|
|
|
102
85
|
## Thermo skill
|
|
103
86
|
|
|
104
87
|
**Recommended (skill only):**
|
|
105
88
|
|
|
106
89
|
```bash
|
|
107
|
-
tap-the-sign install-thermo
|
|
90
|
+
npx tap-the-sign install-thermo
|
|
108
91
|
# equivalent:
|
|
109
92
|
npx skills add cursor/plugins --skill thermo-nuclear-code-quality-review \
|
|
110
93
|
-a cursor -a claude-code -a codex --copy -y
|
|
@@ -122,12 +105,12 @@ npx skills add cursor/plugins --skill thermo-nuclear-code-quality-review \
|
|
|
122
105
|
|
|
123
106
|
| Command | Action |
|
|
124
107
|
|---------|--------|
|
|
125
|
-
| `tap-the-sign on` | Enable hook |
|
|
126
|
-
| `tap-the-sign off` | Disable hook |
|
|
127
|
-
| `tap-the-sign status` | Show hook + skill status |
|
|
128
|
-
| `tap-the-sign doctor` | Fail if thermo skill missing |
|
|
129
|
-
| `tap-the-sign doctor --fix` | Run `install-thermo` if skill missing |
|
|
130
|
-
| `tap-the-sign install-thermo` | Install thermo skill via `npx skills add` |
|
|
108
|
+
| `npx tap-the-sign on` | Enable hook |
|
|
109
|
+
| `npx tap-the-sign off` | Disable hook |
|
|
110
|
+
| `npx tap-the-sign status` | Show hook + skill status |
|
|
111
|
+
| `npx tap-the-sign doctor` | Fail if thermo skill missing |
|
|
112
|
+
| `npx tap-the-sign doctor --fix` | Run `install-thermo` if skill missing |
|
|
113
|
+
| `npx tap-the-sign install-thermo` | Install thermo skill via `npx skills add` |
|
|
131
114
|
|
|
132
115
|
**Cursor slash commands:** `/tap-the-sign-on`, `/tap-the-sign-off`, `/tap-the-sign-status`
|
|
133
116
|
|
|
@@ -150,7 +133,7 @@ See [docs/REQUIREMENTS.md](docs/REQUIREMENTS.md).
|
|
|
150
133
|
## Uninstall
|
|
151
134
|
|
|
152
135
|
```bash
|
|
153
|
-
tap-the-sign uninstall
|
|
136
|
+
npx tap-the-sign uninstall
|
|
154
137
|
```
|
|
155
138
|
|
|
156
139
|
Also removes legacy `plan-sandwich` hook entries if present.
|
package/docs/REQUIREMENTS.md
CHANGED
|
@@ -49,7 +49,7 @@ tap-the-sign doctor
|
|
|
49
49
|
| Step | Behavior |
|
|
50
50
|
|------|----------|
|
|
51
51
|
| Plan mode submit | Allowed — hook arms normally |
|
|
52
|
-
| Post-plan follow-up | **Skipped** — warning
|
|
52
|
+
| Post-plan follow-up | **Skipped** — warning follow-up in chat + Hooks output |
|
|
53
53
|
| `tap-the-sign doctor` | Exits non-zero with install instructions |
|
|
54
54
|
| `tap-the-sign doctor --fix` | Attempts `install-thermo` |
|
|
55
55
|
|
package/hooks-bin/constants.mjs
CHANGED
|
@@ -28,6 +28,5 @@ Be careful to not introduce any blocker higher than LOW and checking three times
|
|
|
28
28
|
On Pass 3: Thermo-nuclear subagent on final diff; zero HIGH/MID.`;
|
|
29
29
|
|
|
30
30
|
export const SKILL_MISSING_WARNING =
|
|
31
|
-
'tap-the-sign: thermo
|
|
32
|
-
'
|
|
33
|
-
'Skipping auto pre-flight follow-up.';
|
|
31
|
+
'tap-the-sign: thermo skill not found. Run: npx tap-the-sign install-thermo ' +
|
|
32
|
+
'(or /add-plugin cursor-team-kit). Thermo pre-flight was skipped.';
|
package/hooks-bin/run-hook.mjs
CHANGED
|
@@ -79,12 +79,9 @@ function respondFollowUp(host, message) {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
function
|
|
82
|
+
function respondSkillMissing(host, warning) {
|
|
83
83
|
console.error(warning);
|
|
84
|
-
|
|
85
|
-
return respondEmpty();
|
|
86
|
-
}
|
|
87
|
-
return JSON.stringify({ systemMessage: warning });
|
|
84
|
+
return respondFollowUp(host, warning);
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
export async function runHook({ event, host }) {
|
|
@@ -134,7 +131,7 @@ export async function runHook({ event, host }) {
|
|
|
134
131
|
if (phase === PHASE_PLANNING) {
|
|
135
132
|
if (!isThermoSkillInstalled()) {
|
|
136
133
|
transitionPhase(sessionId, PHASE_DONE);
|
|
137
|
-
process.stdout.write(
|
|
134
|
+
process.stdout.write(respondSkillMissing(host, SKILL_MISSING_WARNING));
|
|
138
135
|
return;
|
|
139
136
|
}
|
|
140
137
|
transitionPhase(sessionId, PHASE_PREFLIGHT);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tap-the-sign",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Auto thermo sign-off after Plan mode plans. Requires thermo-nuclear-code-quality-review skill.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|
|
36
|
-
"url": "git+https://github.com/
|
|
36
|
+
"url": "git+https://github.com/john-prem/tap-the-sign.git"
|
|
37
37
|
},
|
|
38
|
-
"homepage": "https://github.com/
|
|
38
|
+
"homepage": "https://github.com/john-prem/tap-the-sign#readme",
|
|
39
39
|
"bugs": {
|
|
40
|
-
"url": "https://github.com/
|
|
40
|
+
"url": "https://github.com/john-prem/tap-the-sign/issues"
|
|
41
41
|
},
|
|
42
42
|
"license": "MIT",
|
|
43
43
|
"keywords": [
|
package/src/constants.mjs
CHANGED
|
@@ -28,6 +28,5 @@ Be careful to not introduce any blocker higher than LOW and checking three times
|
|
|
28
28
|
On Pass 3: Thermo-nuclear subagent on final diff; zero HIGH/MID.`;
|
|
29
29
|
|
|
30
30
|
export const SKILL_MISSING_WARNING =
|
|
31
|
-
'tap-the-sign: thermo
|
|
32
|
-
'
|
|
33
|
-
'Skipping auto pre-flight follow-up.';
|
|
31
|
+
'tap-the-sign: thermo skill not found. Run: npx tap-the-sign install-thermo ' +
|
|
32
|
+
'(or /add-plugin cursor-team-kit). Thermo pre-flight was skipped.';
|
package/src/hooks/runner.mjs
CHANGED
|
@@ -79,12 +79,9 @@ function respondFollowUp(host, message) {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
function
|
|
82
|
+
function respondSkillMissing(host, warning) {
|
|
83
83
|
console.error(warning);
|
|
84
|
-
|
|
85
|
-
return respondEmpty();
|
|
86
|
-
}
|
|
87
|
-
return JSON.stringify({ systemMessage: warning });
|
|
84
|
+
return respondFollowUp(host, warning);
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
export async function runHook({ event, host }) {
|
|
@@ -134,7 +131,7 @@ export async function runHook({ event, host }) {
|
|
|
134
131
|
if (phase === PHASE_PLANNING) {
|
|
135
132
|
if (!isThermoSkillInstalled()) {
|
|
136
133
|
transitionPhase(sessionId, PHASE_DONE);
|
|
137
|
-
process.stdout.write(
|
|
134
|
+
process.stdout.write(respondSkillMissing(host, SKILL_MISSING_WARNING));
|
|
138
135
|
return;
|
|
139
136
|
}
|
|
140
137
|
transitionPhase(sessionId, PHASE_PREFLIGHT);
|