Generate intelligent content for PARA Obsidian vault templates. Use when asked to create new notes (project, area, resource, task, clipping, daily, weekly-review, booking, checklist, itinerary, trip-research), populate template sections with AI-generated content, or understand what fields a template requires before creation.
From para-obsidiannpx claudepluginhub nathanvale/side-quest-marketplace-old --plugin para-obsidianThis skill is limited to using the following tools:
references/content-strategies.mdreferences/examples.mdreferences/template-catalog.mdDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Before creating notes, understand what already exists:
// List existing areas
para_list_areas({ response_format: "json" })
// List existing projects (for task linking)
para_list_projects({ response_format: "json" })
CRITICAL: Classification vs Invention
When selecting areas/projects, you are CLASSIFYING content into existing categories, NOT inventing factual data:
Areas/Projects = CLASSIFICATION (analytical task)
Factual Data = INVENTION (requires user knowledge)
null when unknown, never guessVia MCP tools:
para_list_areas - Get existing areaspara_list_projects - Get existing projectsFor slash commands: Use AskUserQuestion to present existing areas/projects as options with descriptions of what domain they represent. Include "Other" for new classifications when content doesn't fit existing categories.
para_template_fields({ template: "project", response_format: "json" })
Returns required args, auto-filled fields, and body sections.
Ask focused questions matching the template type:
| Template | Key Questions |
|---|---|
| project | What's the goal? How will you know it's done? Which life domain does this belong to (analyze: Home/Work/Health/Finance/Learning/Family)? ← CLASSIFY into existing areas |
| area | What's your responsibility? What standards matter? |
| resource | Why does this resonate? What's the key insight? Which life domain is this resource for? ← CLASSIFY based on content domain |
| task | What's the outcome? What's the priority? Which project is this supporting (analyze task context)? ← CLASSIFY into existing projects or standalone |
Classification approach:
Content-Heavy (project, resource, weekly-review, daily): Generate paragraphs, bullet lists, [[wikilinks]]
Metadata-Heavy (task, booking, checklist): Focus on frontmatter, minimal body content
CRITICAL: When generating wikilinks for frontmatter args, do NOT include extra quotes:
"Area": "[[Product]]""Area": "\"[[Product]]\""This ensures Dataview queries work correctly.
para_create({
template: "project",
title: "Launch Dark Mode",
args: {
"Area": "[[Product]]",
"Target completion date (YYYY-MM-DD)": "2025-03-31"
},
content: {
"Why This Matters": "Dark mode reduces eye strain and improves accessibility for users who work in low-light environments.",
"Success Criteria": "- [ ] Theme toggle works\n- [ ] Persists across sessions\n- [ ] Respects system preference"
},
response_format: "json"
})
para_fm_validate({ file: "Launch Dark Mode.md", response_format: "json" })
| Error | Resolution |
|---|---|
| Template not found | Use para_templates({ response_format: "json" }) to list available templates |
| Missing required arg | Use para_template_fields({ template: "<name>", response_format: "json" }) to discover requirements |
| Section not injected | Heading may not exist in template - check template structure |
| Vault not git repo | Ensure PARA_VAULT is an initialized git repository |
Load these as needed based on the task:
./references/template-catalog.md — Full catalog of all 11 templates with required args and body sections./references/content-strategies.md — Template-specific content generation strategies (goal clarification, success criteria, risk identification)./references/examples.md — Complete CLI examples for project, area, resource, taskThe convert workflow uses classification-based prompting to intelligently populate area/project fields:
// Read existing note content
para_read({ file: "note.md", response_format: "json" })
// Get vault context for classification
para_list_areas({ response_format: "json" })
para_list_projects({ response_format: "json" })
// Create with classified area (LLM analyzes content and classifies)
para_create({
template: "project",
title: "Fitness Tracking App",
args: { "Area": "[[Health]]" }, // Classified into existing area
response_format: "json"
})
// Example: "fitness tracking" content → [[Health]] (not "Wellness" or "Fitness")
How classification works:
Classification examples from prompt:
For manual note creation via slash commands, use classification-based questioning:
Example:
// 1. Fetch existing areas
const { areas } = await para_list_areas({ response_format: "json" });
// 2. Analyze content and ask user (with domain context)
const answer = await AskUserQuestion({
question: "This content appears to be about fitness tracking. Which life domain should it belong to?",
header: "Area",
options: [
{ label: "Health", description: "Ongoing health & wellness management (recommended for fitness)" },
{ label: "Personal", description: "Personal development & self-improvement" },
{ label: "Home", description: "Home responsibilities & maintenance" }
],
multiSelect: false
});
// 3. Create with classified area
await para_create({
template: "project",
title: "My Project",
args: { "Area": `[[${answer}]]` } // No quotes!
});
Classification guidance:
Tags are hard constrained - must come from config. When working with tags, always validate against the allowed tag list defined in your vault configuration. Tags typically include categories like: project, area, resource, task, daily, journal, etc. NO new tags are allowed outside the configured set.