@rune-kit/rune 2.1.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.
- package/LICENSE +21 -0
- package/README.md +357 -0
- package/agents/.gitkeep +0 -0
- package/agents/architect.md +29 -0
- package/agents/asset-creator.md +11 -0
- package/agents/audit.md +11 -0
- package/agents/autopsy.md +11 -0
- package/agents/brainstorm.md +11 -0
- package/agents/browser-pilot.md +11 -0
- package/agents/coder.md +29 -0
- package/agents/completion-gate.md +11 -0
- package/agents/constraint-check.md +11 -0
- package/agents/context-engine.md +11 -0
- package/agents/cook.md +11 -0
- package/agents/db.md +11 -0
- package/agents/debug.md +11 -0
- package/agents/dependency-doctor.md +11 -0
- package/agents/deploy.md +11 -0
- package/agents/design.md +11 -0
- package/agents/docs-seeker.md +11 -0
- package/agents/fix.md +11 -0
- package/agents/hallucination-guard.md +11 -0
- package/agents/incident.md +11 -0
- package/agents/integrity-check.md +11 -0
- package/agents/journal.md +11 -0
- package/agents/launch.md +11 -0
- package/agents/logic-guardian.md +11 -0
- package/agents/marketing.md +11 -0
- package/agents/onboard.md +11 -0
- package/agents/perf.md +11 -0
- package/agents/plan.md +11 -0
- package/agents/preflight.md +11 -0
- package/agents/problem-solver.md +11 -0
- package/agents/rescue.md +11 -0
- package/agents/research.md +11 -0
- package/agents/researcher.md +29 -0
- package/agents/review-intake.md +11 -0
- package/agents/review.md +11 -0
- package/agents/reviewer.md +28 -0
- package/agents/safeguard.md +11 -0
- package/agents/sast.md +11 -0
- package/agents/scanner.md +28 -0
- package/agents/scope-guard.md +11 -0
- package/agents/scout.md +11 -0
- package/agents/sentinel.md +11 -0
- package/agents/sequential-thinking.md +11 -0
- package/agents/session-bridge.md +11 -0
- package/agents/skill-forge.md +11 -0
- package/agents/skill-router.md +11 -0
- package/agents/surgeon.md +11 -0
- package/agents/team.md +11 -0
- package/agents/test.md +11 -0
- package/agents/trend-scout.md +11 -0
- package/agents/verification.md +11 -0
- package/agents/video-creator.md +11 -0
- package/agents/watchdog.md +11 -0
- package/agents/worktree.md +11 -0
- package/commands/.gitkeep +0 -0
- package/commands/rune.md +168 -0
- package/compiler/__tests__/openclaw-adapter.test.js +140 -0
- package/compiler/__tests__/parser.test.js +55 -0
- package/compiler/adapters/antigravity.js +59 -0
- package/compiler/adapters/claude.js +37 -0
- package/compiler/adapters/cursor.js +67 -0
- package/compiler/adapters/generic.js +60 -0
- package/compiler/adapters/index.js +45 -0
- package/compiler/adapters/openclaw.js +150 -0
- package/compiler/adapters/windsurf.js +60 -0
- package/compiler/bin/rune.js +288 -0
- package/compiler/doctor.js +153 -0
- package/compiler/emitter.js +240 -0
- package/compiler/parser.js +208 -0
- package/compiler/transformer.js +69 -0
- package/compiler/transforms/branding.js +27 -0
- package/compiler/transforms/cross-references.js +29 -0
- package/compiler/transforms/frontmatter.js +38 -0
- package/compiler/transforms/hooks.js +68 -0
- package/compiler/transforms/subagents.js +36 -0
- package/compiler/transforms/tool-names.js +60 -0
- package/contexts/dev.md +34 -0
- package/contexts/research.md +43 -0
- package/contexts/review.md +55 -0
- package/extensions/ai-ml/PACK.md +517 -0
- package/extensions/analytics/PACK.md +557 -0
- package/extensions/backend/PACK.md +678 -0
- package/extensions/chrome-ext/PACK.md +995 -0
- package/extensions/content/PACK.md +381 -0
- package/extensions/devops/PACK.md +520 -0
- package/extensions/ecommerce/PACK.md +280 -0
- package/extensions/gamedev/PACK.md +393 -0
- package/extensions/mobile/PACK.md +273 -0
- package/extensions/saas/PACK.md +805 -0
- package/extensions/security/PACK.md +536 -0
- package/extensions/trading/PACK.md +597 -0
- package/extensions/ui/PACK.md +947 -0
- package/package.json +47 -0
- package/skills/.gitkeep +0 -0
- package/skills/adversary/SKILL.md +271 -0
- package/skills/asset-creator/SKILL.md +157 -0
- package/skills/audit/SKILL.md +466 -0
- package/skills/autopsy/SKILL.md +200 -0
- package/skills/ba/SKILL.md +279 -0
- package/skills/brainstorm/SKILL.md +266 -0
- package/skills/browser-pilot/SKILL.md +168 -0
- package/skills/completion-gate/SKILL.md +151 -0
- package/skills/constraint-check/SKILL.md +165 -0
- package/skills/context-engine/SKILL.md +176 -0
- package/skills/cook/SKILL.md +636 -0
- package/skills/db/SKILL.md +256 -0
- package/skills/debug/SKILL.md +240 -0
- package/skills/dependency-doctor/SKILL.md +235 -0
- package/skills/deploy/SKILL.md +174 -0
- package/skills/design/DESIGN-REFERENCE.md +365 -0
- package/skills/design/SKILL.md +462 -0
- package/skills/doc-processor/SKILL.md +254 -0
- package/skills/docs/SKILL.md +336 -0
- package/skills/docs-seeker/SKILL.md +166 -0
- package/skills/fix/SKILL.md +192 -0
- package/skills/git/SKILL.md +285 -0
- package/skills/hallucination-guard/SKILL.md +204 -0
- package/skills/incident/SKILL.md +241 -0
- package/skills/integrity-check/SKILL.md +169 -0
- package/skills/journal/SKILL.md +190 -0
- package/skills/launch/SKILL.md +330 -0
- package/skills/logic-guardian/SKILL.md +240 -0
- package/skills/marketing/SKILL.md +229 -0
- package/skills/mcp-builder/SKILL.md +311 -0
- package/skills/onboard/SKILL.md +298 -0
- package/skills/perf/SKILL.md +297 -0
- package/skills/plan/SKILL.md +520 -0
- package/skills/preflight/SKILL.md +231 -0
- package/skills/problem-solver/SKILL.md +284 -0
- package/skills/rescue/SKILL.md +434 -0
- package/skills/research/SKILL.md +122 -0
- package/skills/review/SKILL.md +354 -0
- package/skills/review-intake/SKILL.md +222 -0
- package/skills/safeguard/SKILL.md +188 -0
- package/skills/sast/SKILL.md +190 -0
- package/skills/scaffold/SKILL.md +276 -0
- package/skills/scope-guard/SKILL.md +150 -0
- package/skills/scout/SKILL.md +232 -0
- package/skills/sentinel/SKILL.md +320 -0
- package/skills/sentinel-env/SKILL.md +226 -0
- package/skills/sequential-thinking/SKILL.md +234 -0
- package/skills/session-bridge/SKILL.md +287 -0
- package/skills/skill-forge/SKILL.md +317 -0
- package/skills/skill-router/SKILL.md +267 -0
- package/skills/surgeon/SKILL.md +203 -0
- package/skills/team/SKILL.md +397 -0
- package/skills/test/SKILL.md +271 -0
- package/skills/trend-scout/SKILL.md +145 -0
- package/skills/verification/SKILL.md +201 -0
- package/skills/video-creator/SKILL.md +201 -0
- package/skills/watchdog/SKILL.md +166 -0
- package/skills/worktree/SKILL.md +140 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: journal
|
|
3
|
+
description: Persistent state tracking and Architecture Decision Records across sessions. Manages progress state, module health, dependency graphs, and ADRs for any workflow.
|
|
4
|
+
metadata:
|
|
5
|
+
author: runedev
|
|
6
|
+
version: "0.2.0"
|
|
7
|
+
layer: L3
|
|
8
|
+
model: haiku
|
|
9
|
+
group: state
|
|
10
|
+
tools: "Read, Write, Edit, Glob, Grep"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# journal
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Persistent state tracking and Architecture Decision Records across sessions. Journal manages the state files that allow any workflow to span multiple sessions without losing progress — rescue operations, feature development, deploy decisions, or audit findings. Separate from session-bridge which handles general context injection — journal writes durable, human-readable state that survives compaction.
|
|
18
|
+
|
|
19
|
+
## Triggers
|
|
20
|
+
|
|
21
|
+
- Called by any skill needing decision persistence or progress tracking
|
|
22
|
+
- Auto-trigger: after surgeon completes a module, after deploy, after audit phases
|
|
23
|
+
|
|
24
|
+
## Calls (outbound)
|
|
25
|
+
|
|
26
|
+
None — pure L3 state management utility.
|
|
27
|
+
|
|
28
|
+
## Called By (inbound)
|
|
29
|
+
|
|
30
|
+
- `surgeon` (L2): update progress after each surgery session
|
|
31
|
+
- `rescue` (L1): read state for rescue dashboard
|
|
32
|
+
- `autopsy` (L2): save initial health assessment
|
|
33
|
+
- `cook` (L1): record key architectural decisions made during feature development
|
|
34
|
+
- `deploy` (L2): record deploy decision, rollback plan, and post-deploy status
|
|
35
|
+
- `audit` (L2): save AUDIT-REPORT.md and record health trend entry
|
|
36
|
+
- `incident` (L2): record incident timeline and postmortem
|
|
37
|
+
- `skill-forge` (L2): record skill creation decisions and rationale
|
|
38
|
+
|
|
39
|
+
## Files Managed
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
.rune/RESCUE-STATE.md — Human-readable rescue progress (loaded into context)
|
|
43
|
+
.rune/module-status.json — Machine-readable module states
|
|
44
|
+
.rune/dependency-graph.mmd — Mermaid diagram, color-coded by health
|
|
45
|
+
.rune/adr/ — Architecture Decision Records (one per decision)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Execution
|
|
49
|
+
|
|
50
|
+
### Step 1 — Load state
|
|
51
|
+
|
|
52
|
+
Use `Read` to load current rescue state:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Read: .rune/RESCUE-STATE.md
|
|
56
|
+
Read: .rune/module-status.json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If either file does not exist, initialize it with an empty template:
|
|
60
|
+
|
|
61
|
+
- `RESCUE-STATE.md`: create with header `# Rescue State\n\n**Started**: [date]\n**Phase**: 1\n`
|
|
62
|
+
- `module-status.json`: create with `{ "modules": [], "lastUpdated": "[iso-date]" }`
|
|
63
|
+
|
|
64
|
+
Parse `module-status.json` to extract current module states and health scores.
|
|
65
|
+
|
|
66
|
+
### Step 2 — Update progress
|
|
67
|
+
|
|
68
|
+
For each module that was completed during this session:
|
|
69
|
+
|
|
70
|
+
1. Locate the module entry in the parsed `module-status.json`
|
|
71
|
+
2. Update its fields:
|
|
72
|
+
- `status`: set to `"complete"` (or `"in-progress"` / `"blocked"` as appropriate)
|
|
73
|
+
- `healthScore`: set to the post-surgery score (0-100)
|
|
74
|
+
- `completedAt`: set to current ISO timestamp
|
|
75
|
+
3. Mark the active module pointer in `RESCUE-STATE.md` — update the `**Current Module**` line to the next pending module
|
|
76
|
+
|
|
77
|
+
Use `Write` to save the updated `module-status.json`.
|
|
78
|
+
|
|
79
|
+
Use `Edit` to update the relevant lines in `RESCUE-STATE.md` (current phase, current module, counts of completed vs pending).
|
|
80
|
+
|
|
81
|
+
### Step 3 — Record decisions
|
|
82
|
+
|
|
83
|
+
For each architectural decision or trade-off made during this session (applies to any workflow — feature development, deploy, rescue, audit):
|
|
84
|
+
|
|
85
|
+
1. Generate an ADR filename: `.rune/adr/ADR-[NNN]-[slug].md` where NNN is the next sequential number
|
|
86
|
+
2. Use `Write` to create the ADR file with this format:
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
# ADR-[NNN]: [Decision Title]
|
|
90
|
+
|
|
91
|
+
**Date**: [YYYY-MM-DD]
|
|
92
|
+
**Status**: Accepted
|
|
93
|
+
**Workflow**: [rescue | cook | deploy | audit | other]
|
|
94
|
+
**Scope**: [affected module, feature, or system area]
|
|
95
|
+
|
|
96
|
+
## Context
|
|
97
|
+
[Why this decision was needed — what problem or trade-off prompted it]
|
|
98
|
+
|
|
99
|
+
## Decision
|
|
100
|
+
[What was decided — be specific, not "we chose X" but "we chose X over Y"]
|
|
101
|
+
|
|
102
|
+
## Rationale
|
|
103
|
+
[Why this approach over alternatives — cite specific constraints or evidence]
|
|
104
|
+
|
|
105
|
+
## Consequences
|
|
106
|
+
[Impact on files/modules/future work — include rollback path if relevant]
|
|
107
|
+
|
|
108
|
+
## Rejected Alternatives
|
|
109
|
+
[List what was considered but NOT chosen, and why. This prevents future sessions from re-visiting dead ends.]
|
|
110
|
+
- **[Alternative A]**: Rejected because [specific reason — constraint, performance, complexity]
|
|
111
|
+
- **[Alternative B]**: Rejected because [specific reason]. May reconsider if [condition changes].
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 4 — Update dependency graph
|
|
115
|
+
|
|
116
|
+
If any module dependencies changed during this session (new imports, removed dependencies, refactored interfaces):
|
|
117
|
+
|
|
118
|
+
Use `Read` on `.rune/dependency-graph.mmd` to load the current Mermaid diagram.
|
|
119
|
+
|
|
120
|
+
Use `Edit` to update the affected node entries:
|
|
121
|
+
- Change node color/style to reflect new health status (e.g., `style ModuleName fill:#00d084` for healthy, `fill:#ff6b6b` for broken)
|
|
122
|
+
- Add or remove edges as dependencies changed
|
|
123
|
+
|
|
124
|
+
Use `Write` to save the updated `.rune/dependency-graph.mmd`.
|
|
125
|
+
|
|
126
|
+
### Step 5 — Save state
|
|
127
|
+
|
|
128
|
+
Use `Write` to finalize any remaining state file changes not already saved in Steps 2-4.
|
|
129
|
+
|
|
130
|
+
Confirm all four managed files are consistent:
|
|
131
|
+
- `RESCUE-STATE.md` reflects current phase and module
|
|
132
|
+
- `module-status.json` has updated scores and timestamps
|
|
133
|
+
- ADR files exist for all decisions made
|
|
134
|
+
- `dependency-graph.mmd` reflects current module relationships
|
|
135
|
+
|
|
136
|
+
### Step 6 — Report
|
|
137
|
+
|
|
138
|
+
Emit the journal update summary to the calling skill.
|
|
139
|
+
|
|
140
|
+
## Output Format
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
## Journal Update
|
|
144
|
+
- **Phase**: [current rescue phase]
|
|
145
|
+
- **Module**: [current module]
|
|
146
|
+
- **Health**: [before] → [after]
|
|
147
|
+
- **ADRs Written**: [count]
|
|
148
|
+
- **Files Updated**: [list of .rune/ files modified]
|
|
149
|
+
- **Next Module**: [next in queue, or "rescue complete"]
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Context Recovery (new session)
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
1. Read .rune/RESCUE-STATE.md → full rescue history
|
|
156
|
+
2. Read .rune/module-status.json → module states and health scores
|
|
157
|
+
3. Read git log → latest changes since last session
|
|
158
|
+
4. Read CLAUDE.md → project conventions
|
|
159
|
+
→ Result: Zero context loss across rescue sessions
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Constraints
|
|
163
|
+
|
|
164
|
+
1. MUST record decisions with rationale — not just "decided to use X"
|
|
165
|
+
2. MUST timestamp all entries
|
|
166
|
+
3. MUST NOT log sensitive data (secrets, tokens, credentials)
|
|
167
|
+
4. MUST work for any workflow — never require rescue-specific fields to be present
|
|
168
|
+
|
|
169
|
+
## Sharp Edges
|
|
170
|
+
|
|
171
|
+
Known failure modes for this skill. Check these before declaring done.
|
|
172
|
+
|
|
173
|
+
| Failure Mode | Severity | Mitigation |
|
|
174
|
+
|---|---|---|
|
|
175
|
+
| ADR written from memory instead of actual session events | HIGH | Only record decisions that were explicitly made in this session — don't reconstruct |
|
|
176
|
+
| RESCUE-STATE.md initialized without content when called from non-rescue workflows | MEDIUM | If caller is not rescue/surgeon, skip RESCUE-STATE.md initialization — use progress.md instead |
|
|
177
|
+
| Overwriting human-written ADR content on re-run | CRITICAL | MUST check if ADR-[NNN].md exists before writing — never overwrite, increment NNN |
|
|
178
|
+
| Empty ADR Rationale field ("decided to use X") | MEDIUM | Constraint 1 blocks this — re-prompt for rationale before writing |
|
|
179
|
+
|
|
180
|
+
## Done When
|
|
181
|
+
|
|
182
|
+
- All decisions from the session recorded as ADR files with rationale
|
|
183
|
+
- Progress state updated (module status, phase, or deploy event as appropriate)
|
|
184
|
+
- Dependency graph updated if module relationships changed
|
|
185
|
+
- Journal Update summary emitted to calling skill
|
|
186
|
+
- No existing ADR files overwritten
|
|
187
|
+
|
|
188
|
+
## Cost Profile
|
|
189
|
+
|
|
190
|
+
~200-500 tokens input, ~100-300 tokens output. Haiku. Pure file management.
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: launch
|
|
3
|
+
description: "Deploy + marketing orchestrator. Use when user says 'launch', 'ship to production', 'deploy and announce', or 'go live'. Runs the full pipeline — pre-flight tests, deployment, live verification, marketing asset creation, and announcement."
|
|
4
|
+
context: fork
|
|
5
|
+
agent: general-purpose
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
metadata:
|
|
8
|
+
author: runedev
|
|
9
|
+
version: "0.3.0"
|
|
10
|
+
layer: L1
|
|
11
|
+
model: sonnet
|
|
12
|
+
group: orchestrator
|
|
13
|
+
tools: "Read, Write, Edit, Bash, Glob, Grep"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# launch
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
Orchestrate the full deployment and marketing pipeline. Launch coordinates testing, deployment, live site verification, marketing asset creation, and public announcement. One command to go from "code ready" to "product live and marketed."
|
|
21
|
+
|
|
22
|
+
<HARD-GATE>
|
|
23
|
+
- ALL tests must pass before any deploy attempt. Zero exceptions. Block deploy if any of: tests failing, TypeScript errors present, build fails, or sentinel CRITICAL issues detected.
|
|
24
|
+
</HARD-GATE>
|
|
25
|
+
|
|
26
|
+
## Triggers
|
|
27
|
+
|
|
28
|
+
- `/rune launch` — manual invocation
|
|
29
|
+
- Called by `team` when delegating launch tasks
|
|
30
|
+
|
|
31
|
+
## Calls (outbound)
|
|
32
|
+
|
|
33
|
+
- `test` (L2): pre-deployment full test suite
|
|
34
|
+
- `audit` (L2): pre-launch health check — full 7-phase quality gate
|
|
35
|
+
- `deploy` (L2): push to target platform
|
|
36
|
+
- `incident` (L2): if post-launch health check fails → triage and contain
|
|
37
|
+
- `browser-pilot` (L3): verify live site screenshots and performance
|
|
38
|
+
- `marketing` (L2): create launch assets (landing copy, social, SEO)
|
|
39
|
+
- `watchdog` (L3): setup post-deploy monitoring
|
|
40
|
+
- `video-creator` (L3): create launch/demo video content
|
|
41
|
+
- L4 extension packs: domain-specific launch patterns when context matches (e.g., @rune/devops for infrastructure, @rune/ecommerce for storefront)
|
|
42
|
+
|
|
43
|
+
## Called By (inbound)
|
|
44
|
+
|
|
45
|
+
- User: `/rune launch` direct invocation
|
|
46
|
+
- `team` (L1): when team delegates launch phase
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Execution
|
|
51
|
+
|
|
52
|
+
### Step 0 — Artifact Readiness Check
|
|
53
|
+
|
|
54
|
+
Before starting the pipeline, verify that prerequisite artifacts exist. Scan using `Glob` — do NOT hardcode paths, use discovery patterns.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
REQUIRED ARTIFACTS:
|
|
58
|
+
Source code: Glob **/*.{ts,tsx,js,jsx,py,rs,go} — at least 1 match
|
|
59
|
+
Build config: Glob {package.json,Cargo.toml,pyproject.toml,go.mod} — at least 1 match
|
|
60
|
+
Tests: Glob **/*.{test,spec}.* OR **/test_*.* — at least 1 match
|
|
61
|
+
|
|
62
|
+
RECOMMENDED ARTIFACTS (warn if missing, don't block):
|
|
63
|
+
Design system: Glob .rune/design-system.md — if frontend project
|
|
64
|
+
Deploy config: Glob {vercel.json,netlify.toml,Dockerfile,fly.toml,.github/workflows/*} — any 1
|
|
65
|
+
README: Glob README.md
|
|
66
|
+
Environment: Glob .env.example OR .env.production — warn about secrets if .env found
|
|
67
|
+
|
|
68
|
+
BLOCKING CONDITIONS:
|
|
69
|
+
❌ No source code found → STOP: "Nothing to deploy"
|
|
70
|
+
❌ No build config found → STOP: "No project config detected — cannot determine build/deploy"
|
|
71
|
+
❌ No tests found → WARN: "No tests detected — pre-flight will run build-only verification"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Report artifact status before proceeding:
|
|
75
|
+
```
|
|
76
|
+
## Artifact Check
|
|
77
|
+
- Source: ✅ [N] files ([language])
|
|
78
|
+
- Build config: ✅ [file]
|
|
79
|
+
- Tests: ✅ [N] test files | ⚠️ No tests found
|
|
80
|
+
- Deploy config: ✅ [platform] | ⚠️ Not found (will detect in Phase 2)
|
|
81
|
+
- Design system: ✅ .rune/design-system.md | ⚠️ Not found (run /rune design first for UI projects)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 1 — Initialize TodoWrite
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
TodoWrite([
|
|
88
|
+
{ content: "PRE-FLIGHT: Run full test suite and verification", status: "pending", activeForm: "Running pre-flight checks" },
|
|
89
|
+
{ content: "DEPLOY: Detect platform and push to production", status: "pending", activeForm: "Deploying to production" },
|
|
90
|
+
{ content: "VERIFY LIVE: Check live URL and setup monitoring", status: "pending", activeForm: "Verifying live deployment" },
|
|
91
|
+
{ content: "MARKET: Generate landing copy and social assets", status: "pending", activeForm: "Generating marketing assets" },
|
|
92
|
+
{ content: "ANNOUNCE: Present all marketing assets to user", status: "pending", activeForm: "Preparing announcement" }
|
|
93
|
+
])
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Phase 1 — PRE-FLIGHT
|
|
99
|
+
|
|
100
|
+
Mark todo[0] `in_progress`.
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
REQUIRED SUB-SKILL: rune:verification
|
|
104
|
+
→ Invoke `verification` with scope: "full".
|
|
105
|
+
→ verification runs: type check, lint, unit tests, integration tests, build.
|
|
106
|
+
→ Capture: passed count, failed count, coverage %, build output.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
<HARD-GATE>
|
|
110
|
+
Block deploy if ANY of:
|
|
111
|
+
[ ] Tests failing (failed count > 0)
|
|
112
|
+
[ ] TypeScript errors present
|
|
113
|
+
[ ] Build fails
|
|
114
|
+
[ ] sentinel CRITICAL issues detected (invoke rune:sentinel if not already run)
|
|
115
|
+
|
|
116
|
+
If any check fails:
|
|
117
|
+
→ STOP immediately
|
|
118
|
+
→ Report: "PRE-FLIGHT FAILED — deploy blocked"
|
|
119
|
+
→ List all failures with file + line references
|
|
120
|
+
→ Do NOT proceed to Phase 2
|
|
121
|
+
</HARD-GATE>
|
|
122
|
+
|
|
123
|
+
Mark todo[0] `completed` only when ALL checks pass.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### Phase 2 — DEPLOY
|
|
128
|
+
|
|
129
|
+
Mark todo[1] `in_progress`.
|
|
130
|
+
|
|
131
|
+
**2a. Detect deployment platform.**
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Bash: ls package.json
|
|
135
|
+
Read: package.json (check "scripts" for deploy, build, start commands)
|
|
136
|
+
|
|
137
|
+
Platform detection (in order):
|
|
138
|
+
1. Check package.json scripts for "vercel" → platform = Vercel
|
|
139
|
+
2. Check package.json scripts for "netlify" → platform = Netlify
|
|
140
|
+
3. Check for vercel.json or .vercel/ dir → platform = Vercel
|
|
141
|
+
4. Check for netlify.toml → platform = Netlify
|
|
142
|
+
5. Check for Dockerfile or fly.toml → platform = custom/fly.io
|
|
143
|
+
6. Fallback: ask user for deploy command before continuing
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**2b. Execute deploy command.**
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
Vercel:
|
|
150
|
+
Bash: npx vercel --prod
|
|
151
|
+
Capture: deployment URL from stdout
|
|
152
|
+
|
|
153
|
+
Netlify:
|
|
154
|
+
Bash: npx netlify deploy --prod --dir=[build_output_dir]
|
|
155
|
+
Capture: deployment URL from stdout
|
|
156
|
+
|
|
157
|
+
Custom (package.json script):
|
|
158
|
+
Bash: npm run deploy
|
|
159
|
+
Capture: deployment URL or status from stdout
|
|
160
|
+
|
|
161
|
+
Fly.io:
|
|
162
|
+
Bash: flyctl deploy
|
|
163
|
+
Capture: deployment URL from stdout
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
Error recovery:
|
|
168
|
+
If deploy command exits non-zero:
|
|
169
|
+
→ Capture full stderr
|
|
170
|
+
→ Report: "DEPLOY FAILED: [error summary]"
|
|
171
|
+
→ Do NOT proceed to Phase 3
|
|
172
|
+
→ Present raw error to user for diagnosis
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Mark todo[1] `completed` when deploy returns a live URL.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
### Phase 3 — VERIFY LIVE
|
|
180
|
+
|
|
181
|
+
Mark todo[2] `in_progress`.
|
|
182
|
+
|
|
183
|
+
**3a. Verify live site.**
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
REQUIRED SUB-SKILL: rune:browser-pilot
|
|
187
|
+
→ Invoke `browser-pilot` with the deployed URL.
|
|
188
|
+
→ browser-pilot checks: page loads (HTTP 200), no console errors, critical UI elements visible.
|
|
189
|
+
→ Capture: screenshot, status code, load time, any JS errors.
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
Error recovery:
|
|
194
|
+
If browser-pilot returns non-200 or JS errors:
|
|
195
|
+
→ Report: "LIVE VERIFY FAILED: [details]"
|
|
196
|
+
→ Do NOT proceed to Phase 4
|
|
197
|
+
→ Present screenshot + error log to user
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**3b. Setup monitoring.**
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
REQUIRED SUB-SKILL: rune:watchdog
|
|
204
|
+
→ Invoke `watchdog` with: url=[deployed URL], interval=5min, alert_on=[5xx, timeout].
|
|
205
|
+
→ watchdog configures health check endpoint monitoring.
|
|
206
|
+
→ Capture: monitoring confirmation + health endpoint path.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Mark todo[2] `completed` when live verification passes and monitoring is active.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### Phase 4 — MARKET
|
|
214
|
+
|
|
215
|
+
Mark todo[3] `in_progress`.
|
|
216
|
+
|
|
217
|
+
**4a. Generate marketing assets.**
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
REQUIRED SUB-SKILL: rune:marketing
|
|
221
|
+
→ Invoke `marketing` with: project context, deployed URL, key features.
|
|
222
|
+
→ marketing generates:
|
|
223
|
+
- Landing page hero copy (headline, subheadline, CTA)
|
|
224
|
+
- Twitter/X announcement thread (3-5 tweets)
|
|
225
|
+
- LinkedIn post
|
|
226
|
+
- Product Hunt tagline + description
|
|
227
|
+
- SEO meta tags (title, description, og:image alt)
|
|
228
|
+
→ Capture: all generated copy as structured output.
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**4b. Optional — launch video.**
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
If user requested video content:
|
|
235
|
+
REQUIRED SUB-SKILL: rune:video-creator
|
|
236
|
+
→ Invoke `video-creator` with: deployed URL, feature list, target platform.
|
|
237
|
+
→ Capture: video script + asset manifest.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Mark todo[3] `completed` when all requested assets are generated.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### Phase 5 — ANNOUNCE
|
|
245
|
+
|
|
246
|
+
Mark todo[4] `in_progress`.
|
|
247
|
+
|
|
248
|
+
Present all assets to user in structured format. Do not auto-publish — user approves before posting.
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
Present:
|
|
252
|
+
- Deployed URL (clickable)
|
|
253
|
+
- Monitoring status
|
|
254
|
+
- All marketing copy blocks (ready to copy-paste)
|
|
255
|
+
- Video script (if generated)
|
|
256
|
+
- Next steps checklist
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Mark todo[4] `completed`.
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Constraints
|
|
264
|
+
|
|
265
|
+
1. MUST pass ALL tests before any deploy attempt — zero exceptions
|
|
266
|
+
2. MUST pass sentinel security scan before deploy — no CRITICAL findings allowed
|
|
267
|
+
3. MUST have rollback plan documented before deploying to production
|
|
268
|
+
4. MUST NOT deploy and run marketing simultaneously — deploy first, verify, then market
|
|
269
|
+
5. MUST verify deploy is live and healthy before triggering marketing skills
|
|
270
|
+
|
|
271
|
+
## Mesh Gates
|
|
272
|
+
|
|
273
|
+
| Gate | Requires | If Missing |
|
|
274
|
+
|------|----------|------------|
|
|
275
|
+
| Test Gate | verification output showing all green | Run rune:verification first |
|
|
276
|
+
| Security Gate | sentinel output with no CRITICAL findings | Run rune:sentinel first |
|
|
277
|
+
| Deploy Gate | Successful deploy confirmation before marketing | Deploy first |
|
|
278
|
+
|
|
279
|
+
## Output Format
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
## Launch Report
|
|
283
|
+
- **Status**: live | failed | partial
|
|
284
|
+
- **URL**: [deployed URL]
|
|
285
|
+
- **Tests**: [passed]/[total]
|
|
286
|
+
|
|
287
|
+
### Deployment
|
|
288
|
+
- Platform: [Vercel | Netlify | custom]
|
|
289
|
+
- Build: [success | failed]
|
|
290
|
+
- URL: [live URL]
|
|
291
|
+
|
|
292
|
+
### Monitoring
|
|
293
|
+
- Health endpoint: [path]
|
|
294
|
+
- Check interval: 5min
|
|
295
|
+
- Watchdog: active | failed
|
|
296
|
+
|
|
297
|
+
### Marketing Assets
|
|
298
|
+
- Hero copy: [ready | skipped]
|
|
299
|
+
- Twitter thread: [ready | skipped]
|
|
300
|
+
- LinkedIn post: [ready | skipped]
|
|
301
|
+
- Product Hunt: [ready | skipped]
|
|
302
|
+
- SEO meta: [ready | skipped]
|
|
303
|
+
- Launch video: [ready | skipped]
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## Sharp Edges
|
|
307
|
+
|
|
308
|
+
Known failure modes for this skill. Check these before declaring done.
|
|
309
|
+
|
|
310
|
+
| Failure Mode | Severity | Mitigation |
|
|
311
|
+
|---|---|---|
|
|
312
|
+
| Attempting deploy with failing tests or TypeScript errors | CRITICAL | HARD-GATE blocks this — pre-flight must be 100% green |
|
|
313
|
+
| Running marketing before deploy verified live | HIGH | Constraint 4: deploy → verify HTTP 200 → THEN market. Never simultaneous |
|
|
314
|
+
| No rollback plan before production deploy | MEDIUM | Constraint 3: document rollback strategy before running deploy command |
|
|
315
|
+
| Platform auto-detected incorrectly (wrong deploy command) | MEDIUM | Verify platform config files before running — ask if ambiguous |
|
|
316
|
+
| Marketing assets generated from assumptions rather than scout output | MEDIUM | Step 1 requires scout to run — copy based on actual features, not assumptions |
|
|
317
|
+
|
|
318
|
+
## Done When
|
|
319
|
+
|
|
320
|
+
- Pre-flight PASS: all tests, types, lint, build, and sentinel green
|
|
321
|
+
- Deploy command succeeded with live URL captured
|
|
322
|
+
- Live site returns HTTP 200 (curl or browser-pilot confirmed)
|
|
323
|
+
- watchdog monitoring active on deployed URL
|
|
324
|
+
- All requested marketing assets generated (or skipped with reason)
|
|
325
|
+
- User presented with all assets before any publishing
|
|
326
|
+
- Launch Report emitted with URL, monitoring status, and asset list
|
|
327
|
+
|
|
328
|
+
## Cost Profile
|
|
329
|
+
|
|
330
|
+
~$0.08-0.15 per launch. Sonnet for coordination, delegates to haiku for scanning.
|