SPECLAN Plan Manual
This skill should be used when the user asks to "plan manual implementation", "create a manual plan", "list approved specs for implementation", "plan-manual", "show approved requirements", "prepare implementation plan", or wants to generate a plan file listing all approved SPECLAN requirements ready for manual implementation.
What this skill does
# SPECLAN Plan Manual
Generate a plan file listing all approved SPECLAN features, requirements, and change requests as an ordered hierarchical checklist. The plan file is written to `speclan/.local/plans/` as an audit trail and implementation checklist.
The plan file is **pure data** — no embedded operational prompts. The `implement-manual` skill carries the procedural knowledge.
## Workflow Overview
1. Detect speclan directory
2. Query approved specifications (features, requirements, change requests)
3. Group children by parent, determine pre-check status
4. Determine implementation order
5. Create plan file
6. Validate plan file
7. Present summary to user
## Step 1: Detect Speclan Directory
Locate the speclan directory in the project. Check for `speclan/` in the project root (look for `speclan/features/` or `speclan/goals/` subdirectories). If not found, report error and stop.
```bash
SPECLAN_DIR="./speclan"
```
## Step 2: Query Specifications
**MANDATORY: Use the query script for querying. Do NOT manually glob or grep to discover approved specs.**
Run these Bash commands to get all approved specs as JSON:
```bash
QUERY="${CLAUDE_PLUGIN_ROOT}/skills/speclan-query/scripts/query.sh"
# Get all approved specs
APPROVED_FEATURES=$("$QUERY" --type feature --filter-status approved --full "$SPECLAN_DIR")
APPROVED_REQS=$("$QUERY" --type requirement --filter-status approved --full "$SPECLAN_DIR")
APPROVED_CRS=$("$QUERY" --type change-request --filter-status approved --full "$SPECLAN_DIR")
```
The output is JSON arrays with `id`, `slug`, `type`, `path`, `title`, `status` fields per entity.
If all three arrays are empty (`[]`), report:
```
No approved specifications found in speclan/.
To approve specs for implementation, set their status to "approved":
status: approved
```
## Step 3: Build Hierarchy
Build a tree containing **only approved items and their ancestor chain**. Items that are neither approved nor ancestors of approved items are **excluded** from the plan.
### 3a: Approved Items
All items from `APPROVED_FEATURES`, `APPROVED_REQS`, and `APPROVED_CRS` are the actionable items — they appear as `[ ]` in the plan.
### 3b: Resolve Parent Chains
For each approved requirement and change request, resolve its full parent chain up to the feature level by **reading the spec files directly**.
**Approved requirements** — read the spec → extract the `feature:` frontmatter field → note the parent feature. Read the parent feature spec to get its title and status.
**Approved change requests** — read the spec → extract `parentId` and `parentType` frontmatter fields:
- If `parentType: requirement` → the CR nests under that requirement at level 3. Navigate to the parent requirement spec (two directory levels up from `change-requests/`) to get the requirement's title, status, and `feature:` field. Both the requirement and the feature are ancestors.
- If `parentType: feature` → the CR nests directly under the feature at level 2. Read the feature spec.
**To find a parent spec from a CR path:** The parent directory is two levels up from the CR file (above `change-requests/`):
```
CR path: speclan/.../requirements/R-YYYY-.../change-requests/CR-ZZZZ-slug.md
Parent: speclan/.../requirements/R-YYYY-.../R-YYYY-*.md
```
### 3c: Assemble the Tree
**CRITICAL: The checkbox is determined by the spec's `status:` field, NOT by whether the item was in the query results.**
For each item in the tree, assign the checkbox by reading its spec status:
1. `status: approved` → `[ ]` (pending implementation)
2. Any other status (`in-development`, `under-test`, `released`) → `[x]` (already past planning)
**Only items with `status: approved` get `[ ]`.** Ancestors resolved in Step 3b are NOT approved — they MUST be `[x]`.
**Do NOT include sibling items that have no approved descendants.**
### Example
Given: F-8152 (`released`), R-5847 (`released`), CR-2630 (`approved`):
```
- [x] [F-8152] Change Request Boxes ← released, ancestor → [x]
- [x] [R-5847] Merge CR into Spec ← released, ancestor → [x]
- [ ] [CR-2630] Also for under-test — CHANGE REQUEST: find and alter existing implementation
```
F-8152 and R-5847 are `[x]` because their status is NOT `approved`. Only CR-2630 is `[ ]` because its status IS `approved`. **Never mark a non-approved spec as `[ ]`.**
## Step 3b: Determine Implementation Order
Use the `implementation-order` agent (Task tool, subagent_type: `speclan:implementation-order`) to determine optimal order.
**Feature ordering** — if there are 2 or more features:
```
Determine implementation order for features:
- F-XXXX
- F-YYYY
[list all feature IDs from Step 3]
SPECLAN directory: {SPECLAN_DIR}
```
If there is only 1 feature, no feature ordering needed.
**Requirement ordering** — for each feature with 2 or more requirements:
```
Determine implementation order for requirements:
- R-AAAA
- R-BBBB
- R-CCCC
[list all requirement IDs for this feature]
Parent feature: F-XXXX
SPECLAN directory: {SPECLAN_DIR}
```
Use the returned order to sequence items within each feature in the plan file.
## Step 4: Create Plan File
Ensure the output directory exists:
```bash
mkdir -p "$SPECLAN_DIR/.local/plans"
```
### Filename
```
speclan/.local/plans/{slug}.{YYYY-MM-DDTHH-MM}.plan.md
```
Characterize the plan's scope in exactly three hyphenated words as the slug. The slug should capture what the plan is about at a glance.
Examples: `svg-graph-rendering`, `auth-flow-rework`, `news-help-assistant`, `table-export-fix`
### Plan File Format
**Read the reference file** at `references/plan-file-format.md` for the complete template, formatting rules, and concrete examples.
**CRITICAL: Follow the template in the reference file EXACTLY. Do NOT add operational prompts, code blocks, or your own wording. The plan file is a pure checklist.**
## Step 5: Validate Plan File
**Do NOT just re-read the plan file.** The plan file is the output being validated — it cannot validate itself. Instead, open each referenced spec file and compare its `status:` field against the checkbox in the plan.
For each checkbox line in the plan:
1. Extract the entity ID (e.g., `F-6089`, `R-5847`, `CR-2630`)
2. Extract the spec file path from the `(...)` parentheses in the link sub-bullet below it
3. **Read that spec file** using the Read tool — do NOT rely on any cached or in-memory data from earlier steps
4. Extract the `status:` value from the spec's YAML frontmatter
5. Compare: `status: approved` → checkbox MUST be `[ ]`, any other status → checkbox MUST be `[x]`
If any mismatch is found, **fix it immediately** by editing the plan file. Then report the corrections:
```
Validation: fixed {count} checkbox(es):
- {ID}: status is {status}, changed [ ] → [x]
```
If all checkboxes are correct, proceed silently.
## Step 6: Present Summary
After the plan file is validated, display a summary:
```
## Manual Implementation Plan Created
Plan file: speclan/.local/plans/{filename}
{feature-count} features, {requirement-count} requirements, {cr-count} change requests.
{pending-count} items pending implementation.
Run the `implement-manual` skill to start implementing.
```
## Error Handling
| Scenario | Action |
|----------|--------|
| No speclan directory | Report error, stop |
| No approved specs (all three arrays empty) | Report message with guidance to approve specs |
| Query script not found | Fall back to manual grep: `grep -rl "^status: approved" speclan/features/` |
| Parent feature not found | Warn, list item without feature context |
## Notes
- This skill only creates the plan file — it does not start implementation
- For automated batch implementation, use the `/speclan:implement` command instead
- The plan file at `speclan/.local/plans/` serves as an audit trail and implementation reference
- The `.local/` directory is typically gitignored and holds per-user state
- The `implement-manual` skill uses checkbox states (`[ ]` → `[~]` → `[?]` → `[x]`) to track prRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.