eltmon/overdeck/sync-sources/skills/pan-new-project/SKILL.md
pan-new-project
Complete setup for registering a new project with Overdeck. Handles project registration, issue prefix, workspace config, trust setup, xBRIEF task support init, tracker config, and validates against working projects.
- Source repository stars
- 14
- Declared platforms
- 0
- Static risk flags
- 3
- Last source update
- 2026-08-04
- Source checked
- 2026-08-04
Decision brief
What it does—and where it fits
Trigger: /pan-new-project
Not for
- Missing issueprefix — The 1 cause of "planning agent starts in $HOME."
- Not in GITHUBREPOS — Issues don't appear on dashboard kanban board.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/eltmon/overdeck --skill "sync-sources/skills/pan-new-project"Inspect the Agent Skill "pan-new-project" from https://github.com/eltmon/overdeck/blob/b6d7106f7044de1a243a38b3f2d43b5bbe9b0aaf/sync-sources/skills/pan-new-project/SKILL.md at commit b6d7106f7044de1a243a38b3f2d43b5bbe9b0aaf. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Step 1: Gather Project Information
Ask the user for (or auto-detect from the filesystem):
go.mod → Go, test: make test or go test ./...package.json → Node/TS, test: npm test or pnpm testpom.xml / mvnw → Java/Maven, test: ./mvnw test - 02
Step 2: Register Project
This creates a minimal entry AND pre-trusts the directory in /.claude.json (the projectAddCommand calls preTrustDirectory automatically).
This creates a minimal entry AND pre-trusts the directory in /.claude.json (the projectAddCommand calls preTrustDirectory automatically). - 03
Step 3: Configure projects.yaml
Edit /.overdeck/projects.yaml to add the FULL configuration.
Edit /.overdeck/projects.yaml to add the FULL configuration.Full config (for projects with services, Docker, DNS): - 04
Step 4: Add to Dashboard Tracker Config
For GitHub projects, add to GITHUBREPOS in /.overdeck.env:
For GitHub projects, add to GITHUBREPOS in /.overdeck.env: - 05
Step 5: Verify xBRIEF Task Support
No per-project task database initialization is required. xBRIEF plan items become the executable checklist after planning, and pan task reads and updates their state through the canonical state door.
No per-project task database initialization is required. xBRIEF plan items become the executable checklist after planning, and pan task reads and updates their state through the canonical state door.
Permission review
Static risk signals and limitations
Reads files
The documentation asks the agent to read local files, directories, or repositories.
Read current value, append new repo, write back. The dashboard polls thisWrites files
The documentation asks the agent to create, modify, or delete local files.
### Step 6: Create workspaces/ DirectoryRuns scripts
The documentation asks the agent to run terminal commands or scripts.
node -e "Reads files
The documentation asks the agent to read local files, directories, or repositories.
const d=JSON.parse(require('fs').readFileSync(Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 87/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 14 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- eltmon/overdeck
- Skill path
- sync-sources/skills/pan-new-project/SKILL.md
- Commit
- b6d7106f7044de1a243a38b3f2d43b5bbe9b0aaf
- License
- MIT
- Collected
- 2026-08-04
- Default branch
- main
View the original SKILL.md
New Project Setup
Trigger: /pan-new-project
Sets up a new project for Overdeck management. This is the ONLY correct
way to add a new project. Do NOT just run pan project add alone — it
creates a skeleton entry that breaks planning agents, workspace creation,
issue routing, and xBRIEF task support.
WHY THIS SKILL EXISTS
Running pan project add /path --name foo alone causes these failures:
| Missing config | Symptom |
|---|---|
issue_prefix (issue prefix) | Planning agents start in $HOME, not the project root |
Trust entry in ~/.claude.json | Claude Code shows trust dialog, blocking autonomous agents |
GITHUB_REPOS entry | Issues don't appear on the dashboard kanban board |
workspaces/ directory | Git worktree creation fails |
.gitignore entry | workspaces/ gets committed accidentally |
| Test config | Specialist test agents can't run tests |
EXECUTION STEPS
Step 1: Gather Project Information
Ask the user for (or auto-detect from the filesystem):
| Field | Required | Example | Notes |
|---|---|---|---|
| Path | Yes | ~/Projects/myapp | Must exist, must have .git/ |
| Name | Yes | myapp | Short lowercase key for projects.yaml |
| Issue prefix | Yes | APP | Maps APP-123 → this project. Goes in issue_prefix field |
| Tracker | Yes | github / linear / gitlab | Where issues live |
| Repo slug | Yes | owner/repo | github_repo or gitlab_repo |
| Workspace type | Yes | standalone / monorepo / polyrepo | How git worktrees work |
Auto-detection:
go.mod→ Go, test:make testorgo test ./...package.json→ Node/TS, test:npm testorpnpm testpom.xml/mvnw→ Java/Maven, test:./mvnw testCargo.toml→ Rust, test:cargo testpyproject.toml→ Python, test:pytest
Step 2: Register Project
pan project add <path> --name <name>
This creates a minimal entry AND pre-trusts the directory in ~/.claude.json
(the projectAddCommand calls preTrustDirectory automatically).
Step 3: Configure projects.yaml
Edit ~/.overdeck/projects.yaml to add the FULL configuration.
Minimum viable config:
<project-key>:
name: <name>
path: <absolute-path>
issue_prefix: <PREFIX> # CRITICAL: issue prefix for routing
github_repo: <owner/repo> # or gitlab_repo
workspace:
type: <standalone|monorepo|polyrepo>
workspaces_dir: workspaces
default_branch: main
tests:
unit:
type: <go|vitest|maven|pytest|cargo>
path: .
command: <test command>
quality_gates:
typecheck:
command: <typecheck command>
required: true
lint:
command: <lint command>
required: true
test:
# Keep this change-scoped and fast; e2e/Playwright belongs in CI-only or @slow tiers.
command: npx vitest run --changed {{CHANGED_BASE}}
required: true
Full config (for projects with services, Docker, DNS):
<project-key>:
name: <name>
path: <absolute-path>
issue_prefix: <PREFIX>
github_repo: <owner/repo>
workspace:
type: <type>
workspaces_dir: workspaces
default_branch: main
dns:
domain: <name>.localhost
entries:
- "{{FEATURE_FOLDER}}.{{DOMAIN}}"
sync_method: hosts_file
docker:
traefik: templates/traefik
compose_template: infra/.devcontainer-template
agent:
template_dir: infra/.agent-template
copy_dirs:
- .claude/commands
- .claude/skills
services:
- name: <service>
path: .
start_command: <cmd>
health_url: <url>
port: <port>
env:
secrets_file: ~/.myapp/.env
tests:
unit:
type: <type>
path: .
command: <cmd>
quality_gates:
typecheck:
command: <cmd>
required: true
lint:
command: <cmd>
required: true
test:
command: npx vitest run --changed {{CHANGED_BASE}}
required: true
Step 4: Add to Dashboard Tracker Config
For GitHub projects, add to GITHUB_REPOS in ~/.overdeck.env:
# Format: owner/repo:PREFIX (comma-separated)
# Example: current value might be:
# GITHUB_REPOS=eltmon/overdeck:PAN
# Append the new project:
# GITHUB_REPOS=eltmon/overdeck:PAN,owner/newrepo:APP
Read current value, append new repo, write back. The dashboard polls this to fetch issues from GitHub.
For Linear projects, issues are fetched automatically by team — no
extra config needed beyond issue_prefix in projects.yaml.
For GitLab projects, TBD — not yet supported in dashboard polling.
Step 5: Verify xBRIEF Task Support
No per-project task database initialization is required. xBRIEF plan items become the executable checklist after planning, and pan task reads and updates their state through the canonical state door.
pan task --help >/dev/null && echo "PASS: pan task available"
Step 6: Create workspaces/ Directory
mkdir -p <project-path>/workspaces
Check .gitignore — add workspaces/ if not already there:
grep -q '^workspaces/' <project-path>/.gitignore 2>/dev/null || \
echo 'workspaces/' >> <project-path>/.gitignore
Step 7: Create CLAUDE.md (if missing)
Check if the project has a CLAUDE.md. If not, create a minimal one:
# <Project Name>
## Project Overview
<Brief description>
## Stack
<Language, framework, key dependencies>
## Development
<How to build, run, test>
## Testing
<Test commands, coverage requirements>
Step 8: Validate Configuration
Run ALL of these checks and report pass/fail:
# 1. Project registered
pan project list | grep <name>
# 2. Issue prefix resolves (won't crash)
# Check projects.yaml has issue_prefix: <PREFIX>
# 3. Trust is set in ~/.claude.json
node -e "
const d=JSON.parse(require('fs').readFileSync(
require('os').homedir()+'/.claude.json','utf8'));
console.log(d.projects?.['<path>']?.hasTrustDialogAccepted
? 'PASS: trusted' : 'FAIL: not trusted');
"
# 4. Dashboard can see issues (GitHub only)
grep 'GITHUB_REPOS' ~/.overdeck.env | grep -q '<PREFIX>' && \
echo "PASS: in GITHUB_REPOS" || echo "FAIL: not in GITHUB_REPOS"
# 5. xBRIEF task command available
pan task --help >/dev/null && echo "PASS" || echo "FAIL: pan task unavailable"
# 6. workspaces/ exists
test -d <path>/workspaces && echo "PASS" || echo "FAIL: no workspaces/"
# 7. workspaces/ in .gitignore
grep -q 'workspaces' <path>/.gitignore 2>/dev/null && \
echo "PASS" || echo "FAIL: workspaces/ not in .gitignore"
# 8. CLAUDE.md exists
test -f <path>/CLAUDE.md && echo "PASS" || echo "WARN: no CLAUDE.md"
# 9. Git clean
cd <path> && git status --short | head -5
Step 9: Summary
## New Project Setup Complete: <NAME>
Path: <path>
Issue prefix: <PREFIX> (e.g., <PREFIX>-1, <PREFIX>-42)
Tracker: GitHub (<owner/repo>)
Workspace type: <type>
Tests: <command>
Trusted: Yes
xBRIEF task support: Available through pan task
Dashboard: Issues visible
Validation: 8/8 checks passed
Next steps:
1. Create issues on <tracker>
2. Run: pan plan <PREFIX>-<N> (plan with Opus)
3. Run: pan start <PREFIX>-<N> (spawn implementation agent)
REFERENCE: Working Project Configs
overdeck (monorepo, GitHub)
issue_prefix: PAN,github_repo: eltmon/overdeckworkspace.type: monorepo- Has: dns, docker, agent, services, env, tests
mind-your-now (polyrepo, Linear/GitLab)
issue_prefix: MIN,gitlab_repo: eltmon/mind-your-nowworkspace.type: polyrepowith 6 sub-repos- Has: dns, docker, database, agent, services, tunnel, hume, env, tests
myn-cli (standalone, GitHub)
issue_prefix: CLI,github_repo: mindyournow/myn-cliworkspace.type: standalone- Has: tests
COMMON MISTAKES
- Missing
issue_prefix— The #1 cause of "planning agent starts in $HOME." Despite the name, this field is the issue PREFIX for ALL trackers, not just Linear. - Not in
GITHUB_REPOS— Issues don't appear on dashboard kanban board. - Not pre-trusting the directory — Agent gets stuck on trust dialog.
- Wrong
workspace.type—standalone= single repo,monorepo= one repo with worktrees,polyrepo= multiple repos under one parent dir. - Missing
workspaces/directory — Git worktree creation fails. - Missing
.gitignoreentry —workspaces/gets committed accidentally. - Full-suite per-change gates —
quality_gates.testshould use changed-file scoping such asnpx vitest run --changed {{CHANGED_BASE}}. Put Playwright, e2e, and other heavy suites in CI-only or@slowtiers so unrelated red tests do not block every work agent.
Alternatives
Compare before choosing
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing
JasonColapietro/suede-creator-skills
suede-ab-testing
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).