Create PARA project notes with validated area connections and PARA philosophy guidance. Ensures projects have clear outcomes, deadlines, and valid area relationships. Use when creating new projects to ensure they follow PARA method correctly.
From para-obsidiannpx claudepluginhub nathanvale/side-quest-marketplace-old --plugin para-obsidianThis skill is limited to using the following tools:
references/para-philosophy.mdExecutes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Create PARA-compliant project notes with validated area connections through collaborative dialogue.
From Tiago Forte's PARA Method:
This skill ensures projects are well-defined and properly connected to your life structure.
Phase 0: Load Vault Context (ALWAYS FIRST)
↓
Phase 1: Gather Project Intent
├── What outcome?
└── When complete? (validates it's a project)
↓
Phase 2: Area Selection (CRITICAL - prevents invalid areas)
├── Present numbered list from vault
├── User selects OR creates new
└── NEVER accept free-text area names
↓
Phase 3: Confirm & Create
├── Present complete proposal
├── User approves or adjusts
└── Create with validated frontmatter
ALWAYS fetch vault context before doing anything else:
para_list_areas({ response_format: "json" })
para_list_projects({ response_format: "json" })
Store these lists for:
If user provides context in initial message, still load areas first before responding.
If not provided in initial message, ask:
I'll help you create a new project. Let me ask a few questions to ensure it follows the PARA method.
**What outcome do you want to achieve?**
(A project has a specific end result - something you can "complete")
Good outcomes:
Bad outcomes (suggest area instead):
**When should this be complete?**
(PARA projects have deadlines - when will you know this is done?)
Examples: "2025-03-31", "end of Q1", "next month", "by Feb 28"
If user says "ongoing" or "no deadline":
That sounds more like an **Area** (ongoing responsibility) than a **Project** (specific outcome with deadline).
Would you like to:
1. **Create an area instead** - For ongoing responsibilities
2. **Set a target date** - Even rough estimates help (e.g., "sometime in Q2")
3. **Continue as project** - I'll use a placeholder date you can update later
From the outcome, suggest a clear project title:
Based on your outcome, I suggest:
**Title:** 🎯 [Clear Action + Object]
Examples:
- Outcome: "Set up Clawdbot" → 🎯 Clawdbot Setup & Integration
- Outcome: "Plan birthday trip" → 🎯 Melanie Birthday Trip 2025
- Outcome: "Migrate database" → 🎯 PostgreSQL Migration
Does this title work, or would you prefer something different?
CRITICAL: This phase prevents the "invalid area" bug.
Using the areas loaded in Phase 0, present a numbered list:
**Which life domain does this project belong to?**
Your existing areas:
1. 🎹 Movie Love
2. 🏠 Property
3. 🏡 Home
4. 🐶 Pet - Muffin
5. 📝 Note Taking
6. 🔧 Dotfiles
7. 🤖 AI Practice
Choose a number, or type "new" to create a new area first.
| Response | Action |
|---|---|
Number (e.g., 7) | Use that area: [[🤖 AI Practice]] |
new / create new | Go to Phase 2.3 (Create Area Sub-flow) |
| Area name verbatim | Match against list, use if found |
| Invalid input | Re-prompt with numbered list |
NEVER allow:
**Creating a new area first...**
Areas are ongoing life responsibilities (no end date). Examples:
- 🏡 Home - Household maintenance and improvements
- 💼 Career - Professional development and work
- 🏃 Health - Physical and mental wellness
**What responsibility or life domain is this?**
After user provides name, discover the area template's destination first:
para_template_fields({ template: "area", response_format: "json" })
Then create:
para_create({
template: "area",
title: "[User's area name]",
dest: "<discovered-dest>",
response_format: "json"
})
Then continue with project creation using the new area.
## Project Proposal
**Title:** 🎯 [Title from Phase 1.3]
**Outcome:** [Clear outcome statement]
**Deadline:** [Date from Phase 1.2]
**Area:** [[Area from Phase 2]]
**Status:** planning
### Generated Sections
- **Why This Matters:** [Generated from context - problem it solves, why now]
- **Tasks:** [First actionable steps to get started]
---
**Ready to create?** (yes / tell me what to change)
| Response | Action |
|---|---|
yes / y / looks good | Create immediately |
| Specific feedback | Adjust and re-present OR apply and create |
cancel / no | Abort gracefully |
Before creating, query the project template for its current structure:
para_template_fields({ template: "project", response_format: "json" })
Extract from response:
validArgs → which args to pass (e.g., status, deadline, area field names)creation_meta.dest → destination foldercreation_meta.sections → body section headingscreation_meta.titlePrefix → emoji prefix (auto-applied)Use discovered values from Step 3.3 (creation_meta.dest for dest, creation_meta.sections for section headings, validArgs for field names):
para_create({
template: "project",
title: "[Validated title]",
dest: "<discovered-dest>",
args: {
"<discovered-status-field>": "planning",
"<discovered-deadline-field>": "[Validated date]",
"<discovered-area-field>": "[Validated area from Phase 2]"
},
content: {
"<discovered-why-section>": "[Generated content - problem it solves, why now]",
"<discovered-tasks-section>": "- [ ] [First suggested task]\n- [ ] [Second task if applicable]"
},
response_format: "json"
})
Created: 🎯 [Project Title].md → [discovered-dest]
Linked to: [[Area Name]]
Would you like to:
1. **Add initial tasks** - Break down the first steps
2. **Link resources** - Connect existing notes
3. **Done** - Project is ready to go
| Error | Recovery |
|---|---|
| No areas exist | Offer to create first area before project |
| Duplicate project name | Suggest alternative or confirm overwrite |
| Invalid date format | Re-prompt with examples |
| Area creation fails | Show error, retry area creation |
| Project creation fails | Show error, don't lose user's input |
User: /para-obsidian:create-project
AI: I'll help you create a new project. First, let me load your vault structure.
Your areas:
1. 🎹 Movie Love
2. 🏠 Property
3. 🏡 Home
4. 🐶 Pet - Muffin
5. 📝 Note Taking
6. 🔧 Dotfiles
7. 🤖 AI Practice
What outcome do you want to achieve?
User: Set up Clawdbot for my messaging apps
AI: Great! When do you need this done by?
User: End of February
AI: Which area does this project fall under?
Looking at your areas, I'd suggest:
- 🤖 AI Practice (since Clawdbot is AI-related)
Choose a number (1-7), or type "new" to create a new area.
User: 7
AI: ## Project Proposal
**Title:** 🎯 Clawdbot Setup & Integration
**Outcome:** Set up Clawdbot for messaging apps
**Deadline:** 2025-02-28
**Area:** [[🤖 AI Practice]]
**Status:** planning
### Generated Sections
- **Why This Matters:** Enables AI-assisted messaging across apps.
This automates responses and saves time on routine conversations.
- **Tasks:**
- [ ] Research Clawdbot setup requirements
- [ ] Install and configure Clawdbot
- [ ] Connect to primary messaging apps
- [ ] Test and validate working
---
**Ready to create?** (yes / tell me what to change)
User: yes
AI: Created: 🎯 Clawdbot Setup & Integration.md → 01 Projects
Linked to: [[🤖 AI Practice]]
Would you like to add initial tasks or link resources?
See ./references/para-philosophy.md for deeper explanation of:
After creating the project, emit a structured completion signal so the brain orchestrator can parse the outcome:
SKILL_RESULT:{"status":"ok","skill":"create-project","summary":"Created project: [name] in [[area]]"}SKILL_RESULT:{"status":"ok","skill":"create-project","summary":"Redirected to create-area"}SKILL_RESULT:{"status":"ok","skill":"create-project","summary":"Cancelled by user"}SKILL_RESULT:{"status":"error","skill":"create-project","error":"[error description]"}