panopticon-cli 0.4.6 → 0.4.8
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/package.json +3 -2
- package/scripts/heartbeat-hook +149 -0
- package/scripts/install-git-hooks.sh +66 -0
- package/scripts/notify-complete +79 -0
- package/scripts/postinstall.mjs +49 -0
- package/scripts/pre-tool-hook +60 -0
- package/scripts/record-cost-event.js +94 -0
- package/scripts/record-cost-event.ts +113 -0
- package/scripts/restart-dashboard.sh +59 -0
- package/scripts/setup-certs.sh +66 -0
- package/scripts/specialist-stop-hook +106 -0
- package/scripts/stop-hook +58 -0
- package/scripts/validate-merge.sh +119 -0
- package/skills/beads/README.md +120 -0
- package/skills/beads/SKILL.md +214 -0
- package/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +59 -0
- package/skills/beads/resources/AGENTS.md +62 -0
- package/skills/beads/resources/ASYNC_GATES.md +168 -0
- package/skills/beads/resources/BOUNDARIES.md +469 -0
- package/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
- package/skills/beads/resources/CLI_REFERENCE.md +558 -0
- package/skills/beads/resources/DEPENDENCIES.md +747 -0
- package/skills/beads/resources/INTEGRATION_PATTERNS.md +407 -0
- package/skills/beads/resources/ISSUE_CREATION.md +139 -0
- package/skills/beads/resources/MOLECULES.md +354 -0
- package/skills/beads/resources/PATTERNS.md +341 -0
- package/skills/beads/resources/RESUMABILITY.md +207 -0
- package/skills/beads/resources/STATIC_DATA.md +54 -0
- package/skills/beads/resources/TROUBLESHOOTING.md +489 -0
- package/skills/beads/resources/WORKFLOWS.md +623 -0
- package/skills/beads/resources/WORKTREES.md +94 -0
- package/skills/beads-completion-check/SKILL.md +90 -0
- package/skills/beads-panopticon-guide/SKILL.md +171 -0
- package/skills/bug-fix/SKILL.md +32 -0
- package/skills/clear-writing/SKILL.md +105 -0
- package/skills/clear-writing/references/elements-of-style/01-introductory.md +3 -0
- package/skills/clear-writing/references/elements-of-style/02-elementary-rules-of-usage.md +214 -0
- package/skills/clear-writing/references/elements-of-style/03-elementary-principles-of-composition.md +398 -0
- package/skills/clear-writing/references/elements-of-style/04-a-few-matters-of-form.md +89 -0
- package/skills/clear-writing/references/elements-of-style/05-words-and-expressions-commonly-misused.md +342 -0
- package/skills/clear-writing/references/signs-of-ai-writing.md +901 -0
- package/skills/code-review/SKILL.md +37 -0
- package/skills/code-review-performance/SKILL.md +53 -0
- package/skills/code-review-security/SKILL.md +35 -0
- package/skills/dependency-update/SKILL.md +30 -0
- package/skills/feature-work/SKILL.md +39 -0
- package/skills/incident-response/SKILL.md +32 -0
- package/skills/knowledge-capture/SKILL.md +463 -0
- package/skills/onboard-codebase/SKILL.md +34 -0
- package/skills/opus-plan/SKILL.md +400 -0
- package/skills/pan-approve/SKILL.md +136 -0
- package/skills/pan-code-review/SKILL.md +249 -0
- package/skills/pan-config/SKILL.md +164 -0
- package/skills/pan-convoy-synthesis/SKILL.md +249 -0
- package/skills/pan-diagnose/SKILL.md +360 -0
- package/skills/pan-docker/SKILL.md +279 -0
- package/skills/pan-docs/SKILL.md +113 -0
- package/skills/pan-down/SKILL.md +434 -0
- package/skills/pan-health/SKILL.md +240 -0
- package/skills/pan-help/SKILL.md +237 -0
- package/skills/pan-install/SKILL.md +339 -0
- package/skills/pan-issue/SKILL.md +596 -0
- package/skills/pan-kill/SKILL.md +172 -0
- package/skills/pan-logs/SKILL.md +255 -0
- package/skills/pan-network/SKILL.md +320 -0
- package/skills/pan-oversee/SKILL.md +290 -0
- package/skills/pan-plan/SKILL.md +521 -0
- package/skills/pan-projects/SKILL.md +239 -0
- package/skills/pan-quickstart/SKILL.md +440 -0
- package/skills/pan-reload/SKILL.md +44 -0
- package/skills/pan-rescue/SKILL.md +271 -0
- package/skills/pan-restart/SKILL.md +53 -0
- package/skills/pan-setup/SKILL.md +478 -0
- package/skills/pan-skill-creator/SKILL.md +168 -0
- package/skills/pan-skill-creator/references/output-patterns.md +141 -0
- package/skills/pan-skill-creator/references/workflows.md +90 -0
- package/skills/pan-skill-creator/scripts/init_skill.py +176 -0
- package/skills/pan-status/SKILL.md +493 -0
- package/skills/pan-subagent-creator/SKILL.md +295 -0
- package/skills/pan-subagent-creator/assets/validate-readonly-query.sh +35 -0
- package/skills/pan-subagent-creator/references/example-agents.md +308 -0
- package/skills/pan-subagent-creator/scripts/init_agent.py +126 -0
- package/skills/pan-sync/SKILL.md +272 -0
- package/skills/pan-tell/SKILL.md +157 -0
- package/skills/pan-test-config/SKILL.md +208 -0
- package/skills/pan-tracker/SKILL.md +288 -0
- package/skills/pan-up/SKILL.md +458 -0
- package/skills/pan-workspace-config/SKILL.md +303 -0
- package/skills/refactor/SKILL.md +30 -0
- package/skills/refactor-radar/SKILL.md +475 -0
- package/skills/release/SKILL.md +25 -0
- package/skills/send-feedback-to-agent/SKILL.md +98 -0
- package/skills/session-health/SKILL.md +76 -0
- package/skills/session-health/scripts/check_sessions.py +166 -0
- package/skills/skill-creator/SKILL.md +92 -0
- package/skills/skill-creator/scripts/init_skill.py +152 -0
- package/skills/skill-creator/scripts/package_skill.py +123 -0
- package/skills/stitch-design-md/README.md +34 -0
- package/skills/stitch-design-md/SKILL.md +172 -0
- package/skills/stitch-design-md/examples/DESIGN.md +154 -0
- package/skills/stitch-react-components/README.md +36 -0
- package/skills/stitch-react-components/SKILL.md +47 -0
- package/skills/stitch-react-components/examples/gold-standard-card.tsx +80 -0
- package/skills/stitch-react-components/package-lock.json +231 -0
- package/skills/stitch-react-components/package.json +16 -0
- package/skills/stitch-react-components/resources/architecture-checklist.md +15 -0
- package/skills/stitch-react-components/resources/component-template.tsx +37 -0
- package/skills/stitch-react-components/resources/stitch-api-reference.md +14 -0
- package/skills/stitch-react-components/resources/style-guide.json +27 -0
- package/skills/stitch-react-components/scripts/fetch-stitch.sh +30 -0
- package/skills/stitch-react-components/scripts/validate.js +68 -0
- package/skills/stitch-setup/SKILL.md +94 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/work-complete/SKILL.md +79 -0
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pan-setup
|
|
3
|
+
description: First-time configuration wizard for Panopticon
|
|
4
|
+
triggers:
|
|
5
|
+
- configure panopticon
|
|
6
|
+
- setup panopticon
|
|
7
|
+
- panopticon configuration
|
|
8
|
+
- first time setup
|
|
9
|
+
allowed-tools:
|
|
10
|
+
- Bash
|
|
11
|
+
- Read
|
|
12
|
+
- Edit
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Panopticon Setup Guide
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
This skill guides you through the first-time configuration of Panopticon, including setting up issue trackers, adding projects, and configuring environment variables.
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
- First-time setup after installation
|
|
25
|
+
- User wants to add a new issue tracker
|
|
26
|
+
- User needs to configure API keys
|
|
27
|
+
- User wants to add/remove projects
|
|
28
|
+
- Reconfiguring Panopticon after moving to a new machine
|
|
29
|
+
|
|
30
|
+
## Configuration File
|
|
31
|
+
|
|
32
|
+
Panopticon's main configuration is stored in `~/.panopticon.env`.
|
|
33
|
+
|
|
34
|
+
## Setup Workflow
|
|
35
|
+
|
|
36
|
+
### Step 1: Initialize Configuration
|
|
37
|
+
|
|
38
|
+
If not already done:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pan init
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
This creates `~/.panopticon.env` with default configuration.
|
|
45
|
+
|
|
46
|
+
### Step 2: Configure Issue Tracker
|
|
47
|
+
|
|
48
|
+
Panopticon supports Linear, GitHub, and GitLab issue trackers.
|
|
49
|
+
|
|
50
|
+
#### Linear Configuration
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Edit ~/.panopticon.env and add:
|
|
54
|
+
LINEAR_API_KEY=lin_api_xxxxxxxxxxxxxxxxxxxxx
|
|
55
|
+
LINEAR_TEAM_ID=your-team-id
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Getting your Linear API key:**
|
|
59
|
+
1. Go to https://linear.app/settings/api
|
|
60
|
+
2. Create a new personal API key
|
|
61
|
+
3. Copy the key (starts with `lin_api_`)
|
|
62
|
+
|
|
63
|
+
**Finding your Linear Team ID:**
|
|
64
|
+
```bash
|
|
65
|
+
# After setting LINEAR_API_KEY, run:
|
|
66
|
+
curl -X POST https://api.linear.app/graphql \
|
|
67
|
+
-H "Authorization: YOUR_LINEAR_API_KEY" \
|
|
68
|
+
-H "Content-Type: application/json" \
|
|
69
|
+
-d '{"query":"{ teams { nodes { id name } } }"}'
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Or use the Linear web app URL: `https://linear.app/<workspace>/<team>`
|
|
73
|
+
|
|
74
|
+
#### GitHub Configuration
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Edit ~/.panopticon.env and add:
|
|
78
|
+
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxx
|
|
79
|
+
GITHUB_OWNER=your-username-or-org
|
|
80
|
+
GITHUB_REPO=your-repo-name
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Getting your GitHub token:**
|
|
84
|
+
1. Go to https://github.com/settings/tokens
|
|
85
|
+
2. Generate new token (classic)
|
|
86
|
+
3. Select scopes: `repo`, `workflow`
|
|
87
|
+
4. Copy the token (starts with `ghp_`)
|
|
88
|
+
|
|
89
|
+
#### GitLab Configuration
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Edit ~/.panopticon.env and add:
|
|
93
|
+
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxxx
|
|
94
|
+
GITLAB_PROJECT_ID=12345678
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Getting your GitLab token:**
|
|
98
|
+
1. Go to https://gitlab.com/-/profile/personal_access_tokens
|
|
99
|
+
2. Create new token with `api` scope
|
|
100
|
+
3. Copy the token (starts with `glpat-`)
|
|
101
|
+
|
|
102
|
+
**Finding your GitLab project ID:**
|
|
103
|
+
- Visit your project on GitLab
|
|
104
|
+
- Project ID is shown under the project name
|
|
105
|
+
|
|
106
|
+
### Step 3: Add Projects
|
|
107
|
+
|
|
108
|
+
Add the projects you want Panopticon to manage:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Add a project
|
|
112
|
+
pan project add /home/user/projects/myapp
|
|
113
|
+
|
|
114
|
+
# Verify it was added
|
|
115
|
+
pan project list
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
You can add multiple projects:
|
|
119
|
+
```bash
|
|
120
|
+
pan project add /home/user/projects/frontend
|
|
121
|
+
pan project add /home/user/projects/backend
|
|
122
|
+
pan project add /home/user/projects/mobile
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Step 4: Configure Workspace Defaults
|
|
126
|
+
|
|
127
|
+
Edit `~/.panopticon.env` to set workspace defaults:
|
|
128
|
+
|
|
129
|
+
```env
|
|
130
|
+
# Default workspace root (where workspaces are created)
|
|
131
|
+
WORKSPACE_ROOT=~/projects/panopticon/workspaces
|
|
132
|
+
|
|
133
|
+
# Default Docker template (spring-boot, react-vite, nextjs, etc.)
|
|
134
|
+
DEFAULT_DOCKER_TEMPLATE=spring-boot
|
|
135
|
+
|
|
136
|
+
# Enable Traefik for local domains (true/false)
|
|
137
|
+
TRAEFIK_ENABLED=true
|
|
138
|
+
|
|
139
|
+
# Traefik domain suffix
|
|
140
|
+
TRAEFIK_DOMAIN=localhost
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Step 5: Configure Dashboard
|
|
144
|
+
|
|
145
|
+
```env
|
|
146
|
+
# Dashboard port (default: 3001)
|
|
147
|
+
DASHBOARD_PORT=3001
|
|
148
|
+
|
|
149
|
+
# API server port (default: 3002)
|
|
150
|
+
API_PORT=3002
|
|
151
|
+
|
|
152
|
+
# Enable auto-start dashboard on `pan up`
|
|
153
|
+
AUTO_START_DASHBOARD=true
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Step 6: Configure AI Tools
|
|
157
|
+
|
|
158
|
+
Panopticon syncs skills to various AI coding tools:
|
|
159
|
+
|
|
160
|
+
```env
|
|
161
|
+
# Claude Code skills directory
|
|
162
|
+
CLAUDE_CODE_SKILLS=~/.claude/skills
|
|
163
|
+
|
|
164
|
+
# Cursor skills directory (if using Cursor)
|
|
165
|
+
CURSOR_SKILLS=~/.cursor/skills
|
|
166
|
+
|
|
167
|
+
# Enable auto-sync after skill changes
|
|
168
|
+
AUTO_SYNC_SKILLS=true
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Step 7: Optional - Configure Beads
|
|
172
|
+
|
|
173
|
+
If using beads for issue tracking:
|
|
174
|
+
|
|
175
|
+
```env
|
|
176
|
+
# Beads database location
|
|
177
|
+
BEADS_DB=~/.beads/panopticon.db
|
|
178
|
+
|
|
179
|
+
# Enable beads integration
|
|
180
|
+
BEADS_ENABLED=true
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Step 8: Verify Configuration
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Check that everything is configured correctly
|
|
187
|
+
pan doctor
|
|
188
|
+
|
|
189
|
+
# Verify projects are added
|
|
190
|
+
pan project list
|
|
191
|
+
|
|
192
|
+
# Test tracker connection (if Linear)
|
|
193
|
+
pan work list
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Sample Configuration File
|
|
197
|
+
|
|
198
|
+
Here's a complete example `~/.panopticon.env`:
|
|
199
|
+
|
|
200
|
+
```env
|
|
201
|
+
# Issue Tracker
|
|
202
|
+
LINEAR_API_KEY=lin_api_xxxxxxxxxxxxxxxxxxxxx
|
|
203
|
+
LINEAR_TEAM_ID=abc123
|
|
204
|
+
|
|
205
|
+
# Projects (managed automatically via `pan project add`)
|
|
206
|
+
# Projects are stored in ~/.panopticon/projects.json
|
|
207
|
+
|
|
208
|
+
# Workspace Settings
|
|
209
|
+
WORKSPACE_ROOT=~/projects/panopticon/workspaces
|
|
210
|
+
DEFAULT_DOCKER_TEMPLATE=spring-boot
|
|
211
|
+
TRAEFIK_ENABLED=true
|
|
212
|
+
TRAEFIK_DOMAIN=localhost
|
|
213
|
+
|
|
214
|
+
# Dashboard
|
|
215
|
+
DASHBOARD_PORT=3001
|
|
216
|
+
API_PORT=3002
|
|
217
|
+
AUTO_START_DASHBOARD=true
|
|
218
|
+
|
|
219
|
+
# AI Tools
|
|
220
|
+
CLAUDE_CODE_SKILLS=~/.claude/skills
|
|
221
|
+
AUTO_SYNC_SKILLS=true
|
|
222
|
+
|
|
223
|
+
# Beads
|
|
224
|
+
BEADS_DB=~/.beads/panopticon.db
|
|
225
|
+
BEADS_ENABLED=true
|
|
226
|
+
|
|
227
|
+
# Agent Settings
|
|
228
|
+
DEFAULT_MODEL=sonnet
|
|
229
|
+
MAX_PARALLEL_AGENTS=3
|
|
230
|
+
|
|
231
|
+
# Logging
|
|
232
|
+
LOG_LEVEL=info
|
|
233
|
+
LOG_FILE=~/.panopticon/panopticon.log
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Interactive Setup
|
|
237
|
+
|
|
238
|
+
To guide the user through configuration interactively:
|
|
239
|
+
|
|
240
|
+
1. **Ask about issue tracker:**
|
|
241
|
+
- Which tracker do they use? (Linear, GitHub, GitLab)
|
|
242
|
+
- Help them get API key/token
|
|
243
|
+
- Help them find team/project ID
|
|
244
|
+
|
|
245
|
+
2. **Ask about projects:**
|
|
246
|
+
- Which projects should Panopticon manage?
|
|
247
|
+
- Get absolute paths to project directories
|
|
248
|
+
|
|
249
|
+
3. **Ask about Docker:**
|
|
250
|
+
- What type of projects? (Spring Boot, React, Next.js, etc.)
|
|
251
|
+
- Set appropriate default template
|
|
252
|
+
|
|
253
|
+
4. **Ask about preferences:**
|
|
254
|
+
- Should dashboard auto-start?
|
|
255
|
+
- Enable Traefik for local domains?
|
|
256
|
+
- Auto-sync skills to AI tools?
|
|
257
|
+
|
|
258
|
+
## Troubleshooting
|
|
259
|
+
|
|
260
|
+
### Can't connect to Linear
|
|
261
|
+
|
|
262
|
+
**Problem:** `pan work list` fails with authentication error
|
|
263
|
+
|
|
264
|
+
**Solutions:**
|
|
265
|
+
```bash
|
|
266
|
+
# Verify API key is correct
|
|
267
|
+
echo $LINEAR_API_KEY # Should start with lin_api_
|
|
268
|
+
|
|
269
|
+
# Test API key directly
|
|
270
|
+
curl -X POST https://api.linear.app/graphql \
|
|
271
|
+
-H "Authorization: $LINEAR_API_KEY" \
|
|
272
|
+
-H "Content-Type: application/json" \
|
|
273
|
+
-d '{"query":"{ viewer { name } }"}'
|
|
274
|
+
|
|
275
|
+
# Should return your name, not an error
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Projects not showing up
|
|
279
|
+
|
|
280
|
+
**Problem:** `pan project list` shows no projects
|
|
281
|
+
|
|
282
|
+
**Solutions:**
|
|
283
|
+
```bash
|
|
284
|
+
# Add project again
|
|
285
|
+
pan project add /path/to/project
|
|
286
|
+
|
|
287
|
+
# Check projects.json directly
|
|
288
|
+
cat ~/.panopticon/projects.json
|
|
289
|
+
|
|
290
|
+
# Verify path is absolute (not relative)
|
|
291
|
+
pan project add "$(pwd)" # Use $PWD for current directory
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Dashboard won't start
|
|
295
|
+
|
|
296
|
+
**Problem:** `pan up` fails or dashboard unreachable
|
|
297
|
+
|
|
298
|
+
**Solutions:**
|
|
299
|
+
```bash
|
|
300
|
+
# Check ports aren't in use
|
|
301
|
+
lsof -i :3001
|
|
302
|
+
lsof -i :3002
|
|
303
|
+
|
|
304
|
+
# Check configuration
|
|
305
|
+
cat ~/.panopticon.env | grep PORT
|
|
306
|
+
|
|
307
|
+
# Try custom ports
|
|
308
|
+
DASHBOARD_PORT=4001 API_PORT=4002 pan up
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Skills not syncing
|
|
312
|
+
|
|
313
|
+
**Problem:** Skills don't appear in Claude Code
|
|
314
|
+
|
|
315
|
+
**Solutions:**
|
|
316
|
+
```bash
|
|
317
|
+
# Run sync manually
|
|
318
|
+
pan sync
|
|
319
|
+
|
|
320
|
+
# Check target directory exists
|
|
321
|
+
ls ~/.claude/skills/
|
|
322
|
+
|
|
323
|
+
# Create if missing
|
|
324
|
+
mkdir -p ~/.claude/skills
|
|
325
|
+
|
|
326
|
+
# Verify permissions
|
|
327
|
+
chmod -R u+w ~/.claude/skills
|
|
328
|
+
|
|
329
|
+
# Sync again
|
|
330
|
+
pan sync
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Environment variables not loading
|
|
334
|
+
|
|
335
|
+
**Problem:** Configuration changes don't take effect
|
|
336
|
+
|
|
337
|
+
**Solutions:**
|
|
338
|
+
```bash
|
|
339
|
+
# Verify file location
|
|
340
|
+
ls -la ~/.panopticon.env
|
|
341
|
+
|
|
342
|
+
# Check for syntax errors
|
|
343
|
+
cat ~/.panopticon.env
|
|
344
|
+
|
|
345
|
+
# Ensure no spaces around = in env vars
|
|
346
|
+
# WRONG: KEY = value
|
|
347
|
+
# RIGHT: KEY=value
|
|
348
|
+
|
|
349
|
+
# Restart services
|
|
350
|
+
pan down
|
|
351
|
+
pan up
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## What Your Project Repository Needs
|
|
355
|
+
|
|
356
|
+
After adding a project, you may need to create templates in your project for Docker-based workspaces to work. **This is optional if you only need git worktrees without Docker.**
|
|
357
|
+
|
|
358
|
+
### For Docker-Based Workspaces
|
|
359
|
+
|
|
360
|
+
Your project needs to provide templates that Panopticon copies/processes when creating workspaces:
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
your-project/
|
|
364
|
+
├── infra/
|
|
365
|
+
│ └── .devcontainer-template/
|
|
366
|
+
│ ├── docker-compose.devcontainer.yml.template
|
|
367
|
+
│ ├── compose.infra.yml.template # Optional: for postgres, redis, etc.
|
|
368
|
+
│ ├── Dockerfile
|
|
369
|
+
│ └── devcontainer.json.template # Optional: VS Code integration
|
|
370
|
+
└── ...
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Docker Compose Template Example
|
|
374
|
+
|
|
375
|
+
```yaml
|
|
376
|
+
# docker-compose.devcontainer.yml.template
|
|
377
|
+
services:
|
|
378
|
+
app:
|
|
379
|
+
build: .
|
|
380
|
+
labels:
|
|
381
|
+
- "traefik.http.routers.{{FEATURE_FOLDER}}.rule=Host(`{{FEATURE_FOLDER}}.{{DOMAIN}}`)"
|
|
382
|
+
volumes:
|
|
383
|
+
- ../..:/workspace:cached
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**Available placeholders:**
|
|
387
|
+
- `{{FEATURE_NAME}}` - Issue ID (e.g., `min-123`)
|
|
388
|
+
- `{{FEATURE_FOLDER}}` - Workspace folder (e.g., `feature-min-123`)
|
|
389
|
+
- `{{BRANCH_NAME}}` - Git branch (e.g., `feature/min-123`)
|
|
390
|
+
- `{{COMPOSE_PROJECT}}` - Docker project name
|
|
391
|
+
- `{{DOMAIN}}` - Configured domain (e.g., `myapp.test`)
|
|
392
|
+
|
|
393
|
+
### For Database Seeding
|
|
394
|
+
|
|
395
|
+
If your project uses a database:
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
your-project/
|
|
399
|
+
├── infra/
|
|
400
|
+
│ └── seed/
|
|
401
|
+
│ └── seed.sql # Pre-populated database dump
|
|
402
|
+
└── ...
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Mount in your compose template:
|
|
406
|
+
```yaml
|
|
407
|
+
services:
|
|
408
|
+
postgres:
|
|
409
|
+
image: postgres:16
|
|
410
|
+
volumes:
|
|
411
|
+
- /path/to/project/infra/seed:/docker-entrypoint-initdb.d:ro
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### Minimal Setup (Git Worktrees Only)
|
|
415
|
+
|
|
416
|
+
For simple projects that don't need Docker:
|
|
417
|
+
|
|
418
|
+
```yaml
|
|
419
|
+
# In ~/.panopticon/projects.yaml
|
|
420
|
+
projects:
|
|
421
|
+
simple-app:
|
|
422
|
+
name: "Simple App"
|
|
423
|
+
path: /home/user/projects/simple-app
|
|
424
|
+
linear_team: APP
|
|
425
|
+
# No workspace config = uses plain git worktrees
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Full Configuration
|
|
429
|
+
|
|
430
|
+
See README section "What Your Project Needs to Provide" for complete documentation:
|
|
431
|
+
https://github.com/eltmon/panopticon#what-your-project-needs-to-provide
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Post-Setup
|
|
436
|
+
|
|
437
|
+
After configuration:
|
|
438
|
+
|
|
439
|
+
1. **Start services**: `pan up`
|
|
440
|
+
2. **Verify health**: `pan doctor`
|
|
441
|
+
3. **Test issue tracker**: `pan work list`
|
|
442
|
+
4. **Sync skills**: `pan sync`
|
|
443
|
+
5. **Create first workspace**: Use `/pan-issue` skill
|
|
444
|
+
|
|
445
|
+
## Configuration Checklist
|
|
446
|
+
|
|
447
|
+
- [ ] Run `pan init` to create config file
|
|
448
|
+
- [ ] Add issue tracker API key (Linear/GitHub/GitLab)
|
|
449
|
+
- [ ] Add at least one project with `pan project add`
|
|
450
|
+
- [ ] Set workspace defaults (root directory, Docker template)
|
|
451
|
+
- [ ] Configure dashboard ports if needed
|
|
452
|
+
- [ ] Enable AI tools sync
|
|
453
|
+
- [ ] Run `pan doctor` to verify
|
|
454
|
+
- [ ] Run `pan work list` to test tracker connection
|
|
455
|
+
- [ ] Run `pan sync` to distribute skills
|
|
456
|
+
- [ ] Start dashboard with `pan up`
|
|
457
|
+
|
|
458
|
+
## Next Steps
|
|
459
|
+
|
|
460
|
+
- Use `/pan-quickstart` for combined install + setup workflow
|
|
461
|
+
- Use `/pan-docker` to configure Docker templates
|
|
462
|
+
- Use `/pan-tracker` for advanced tracker configuration
|
|
463
|
+
- Use `/pan-help` to explore available commands
|
|
464
|
+
|
|
465
|
+
## Related Skills
|
|
466
|
+
|
|
467
|
+
- `/pan-install` - Installation prerequisites
|
|
468
|
+
- `/pan-quickstart` - Quick start guide
|
|
469
|
+
- `/pan-tracker` - Tracker configuration (advanced)
|
|
470
|
+
- `/pan-projects` - Project management
|
|
471
|
+
- `/pan-config` - View/edit configuration
|
|
472
|
+
|
|
473
|
+
## More Information
|
|
474
|
+
|
|
475
|
+
- Configuration file: `~/.panopticon.env`
|
|
476
|
+
- Projects list: `~/.panopticon/projects.json`
|
|
477
|
+
- Run `pan doctor` to check configuration
|
|
478
|
+
- Visit dashboard at http://localhost:3001
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pan-skill-creator
|
|
3
|
+
description: Create effective Claude Code skills with specialized knowledge, workflows, and tools. Use when users want to create a new skill, update an existing skill, learn skill best practices, or extend Claude's capabilities. Triggers on "create a skill", "make a new skill", "skill development", "build a skill", or "extend capabilities".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill Creator
|
|
7
|
+
|
|
8
|
+
Create skills that transform Claude from general-purpose into a specialized agent with procedural knowledge.
|
|
9
|
+
|
|
10
|
+
## Core Principles
|
|
11
|
+
|
|
12
|
+
### 1. Concise is Key
|
|
13
|
+
The context window is shared. Claude is already very smart - only add what Claude doesn't already know. Challenge each piece: "Does this justify its token cost?"
|
|
14
|
+
|
|
15
|
+
### 2. Degrees of Freedom
|
|
16
|
+
Match specificity to task fragility:
|
|
17
|
+
|
|
18
|
+
| Freedom Level | When to Use | Format |
|
|
19
|
+
|---------------|-------------|--------|
|
|
20
|
+
| **High** | Multiple valid approaches, context-dependent | Text instructions |
|
|
21
|
+
| **Medium** | Preferred pattern exists, some variation OK | Pseudocode, parameterized scripts |
|
|
22
|
+
| **Low** | Fragile operations, consistency critical | Specific scripts, few parameters |
|
|
23
|
+
|
|
24
|
+
### 3. Progressive Disclosure
|
|
25
|
+
Three-level loading system:
|
|
26
|
+
1. **Metadata** (~100 words) - Always in context
|
|
27
|
+
2. **SKILL.md body** (<5k words) - When skill triggers
|
|
28
|
+
3. **Bundled resources** - As needed (unlimited)
|
|
29
|
+
|
|
30
|
+
## Skill Anatomy
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
skill-name/
|
|
34
|
+
├── SKILL.md (required)
|
|
35
|
+
│ ├── YAML frontmatter (name, description - REQUIRED)
|
|
36
|
+
│ └── Markdown instructions
|
|
37
|
+
└── Bundled Resources (optional)
|
|
38
|
+
├── scripts/ - Executable code (deterministic, reusable)
|
|
39
|
+
├── references/ - Documentation loaded into context as needed
|
|
40
|
+
└── assets/ - Files used in output (templates, images)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Frontmatter (Critical)
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
---
|
|
47
|
+
name: my-skill
|
|
48
|
+
description: What it does AND when to use it. This is the ONLY thing Claude sees to decide if the skill triggers. Be comprehensive but under 200 chars.
|
|
49
|
+
---
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Strong descriptions include:**
|
|
53
|
+
- Specific verbs (extract, create, merge, validate)
|
|
54
|
+
- Concrete use cases
|
|
55
|
+
- Explicit boundaries ("Not for X")
|
|
56
|
+
- Trigger phrases users might say
|
|
57
|
+
|
|
58
|
+
### Bundled Resources
|
|
59
|
+
|
|
60
|
+
| Directory | Purpose | When to Include |
|
|
61
|
+
|-----------|---------|-----------------|
|
|
62
|
+
| `scripts/` | Python/Bash automation | Same code rewritten repeatedly OR deterministic reliability needed |
|
|
63
|
+
| `references/` | Docs, schemas, APIs | Large documentation Claude should reference while working |
|
|
64
|
+
| `assets/` | Templates, images, fonts | Files used in output but not loaded into context |
|
|
65
|
+
|
|
66
|
+
Use `{baseDir}` for portable paths: `{baseDir}/scripts/helper.py`
|
|
67
|
+
|
|
68
|
+
### What NOT to Include
|
|
69
|
+
- README.md, CHANGELOG.md, INSTALLATION_GUIDE.md
|
|
70
|
+
- Setup/testing procedures for humans
|
|
71
|
+
- User-facing documentation
|
|
72
|
+
- Anything not needed by the AI agent
|
|
73
|
+
|
|
74
|
+
## Creation Process
|
|
75
|
+
|
|
76
|
+
### Step 1: Understand with Examples
|
|
77
|
+
Ask:
|
|
78
|
+
- "What functionality should this skill support?"
|
|
79
|
+
- "Can you give examples of how it would be used?"
|
|
80
|
+
- "What would a user say that should trigger this?"
|
|
81
|
+
|
|
82
|
+
### Step 2: Plan Reusable Contents
|
|
83
|
+
For each example, identify:
|
|
84
|
+
- Scripts for repetitive code
|
|
85
|
+
- References for documentation/schemas
|
|
86
|
+
- Assets for templates/boilerplate
|
|
87
|
+
|
|
88
|
+
### Step 3: Initialize Structure
|
|
89
|
+
```bash
|
|
90
|
+
mkdir -p skill-name/{scripts,references,assets}
|
|
91
|
+
touch skill-name/SKILL.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 4: Implement
|
|
95
|
+
|
|
96
|
+
**Writing guidelines:**
|
|
97
|
+
- Always use imperative form ("Do X", not "You should do X")
|
|
98
|
+
- Keep SKILL.md under 500 lines
|
|
99
|
+
- Test scripts by actually running them
|
|
100
|
+
- Delete unused example directories
|
|
101
|
+
|
|
102
|
+
**Organize by domain for multi-domain skills:**
|
|
103
|
+
```
|
|
104
|
+
bigquery-skill/
|
|
105
|
+
├── SKILL.md (overview and navigation)
|
|
106
|
+
└── references/
|
|
107
|
+
├── finance.md
|
|
108
|
+
├── sales.md
|
|
109
|
+
└── product.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Step 5: Test
|
|
113
|
+
|
|
114
|
+
| Test Type | What to Verify |
|
|
115
|
+
|-----------|----------------|
|
|
116
|
+
| Normal operations | Typical requests handled correctly |
|
|
117
|
+
| Edge cases | Graceful handling of incomplete/unusual inputs |
|
|
118
|
+
| Out-of-scope | Skill stays dormant on related but distinct tasks |
|
|
119
|
+
| Triggering | Activation on explicit and natural requests |
|
|
120
|
+
|
|
121
|
+
### Step 6: Iterate
|
|
122
|
+
Use skill on real tasks → Notice struggles → Update → Test again
|
|
123
|
+
|
|
124
|
+
## Common Patterns
|
|
125
|
+
|
|
126
|
+
### Pattern 1: High-level guide with conditional references
|
|
127
|
+
```markdown
|
|
128
|
+
# PDF Processing
|
|
129
|
+
|
|
130
|
+
## Quick start
|
|
131
|
+
[Basic example]
|
|
132
|
+
|
|
133
|
+
## Advanced features
|
|
134
|
+
- **Form filling**: See references/FORMS.md for complete guide
|
|
135
|
+
- **API reference**: See references/REFERENCE.md for all methods
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Pattern 2: Script automation
|
|
139
|
+
```markdown
|
|
140
|
+
## Rotate PDF
|
|
141
|
+
Run the rotation script:
|
|
142
|
+
\`\`\`bash
|
|
143
|
+
python {baseDir}/scripts/rotate_pdf.py --input "$FILE" --degrees 90
|
|
144
|
+
\`\`\`
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Pattern 3: Wizard workflow
|
|
148
|
+
Break complex tasks into discrete steps with user confirmation gates between phases.
|
|
149
|
+
|
|
150
|
+
## Tool Permissions (Advanced)
|
|
151
|
+
|
|
152
|
+
Scope tool access for security:
|
|
153
|
+
```yaml
|
|
154
|
+
allowed-tools: "Bash(git status:*),Bash(git diff:*),Read,Grep"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Key Takeaways
|
|
158
|
+
|
|
159
|
+
1. **Description is everything** - Primary triggering mechanism
|
|
160
|
+
2. **Be concise** - Every token costs context space
|
|
161
|
+
3. **Use progressive disclosure** - Load detail only when needed
|
|
162
|
+
4. **Write for another Claude** - Procedural knowledge that wouldn't be obvious
|
|
163
|
+
5. **Test triggering** - Verify activation on intended requests
|
|
164
|
+
6. **Iterate** - Refine based on real usage
|
|
165
|
+
|
|
166
|
+
## Reference Files
|
|
167
|
+
- See `references/workflows.md` for multi-step process patterns
|
|
168
|
+
- See `references/output-patterns.md` for output format patterns
|