Create resource notes from analyzed proposals. Use when triage orchestrator routes a proposal with proposed_template=resource. Handles frontmatter setup and original file cleanup via para_create.
View on GitHubnathanvale/side-quest-marketplace
para-obsidian
February 4, 2026
Select agents to install to:
npx add-skill https://github.com/nathanvale/side-quest-marketplace/blob/main/plugins/para-obsidian/skills/create-resource/SKILL.md -a claude-code --skill create-resourceInstallation paths:
.claude/skills/create-resource/# Create Resource
Create a resource note from an analyzed proposal.
## Input
You receive a proposal object from an analyzer skill:
```json
{
"file": "00 Inbox/โ๏ธ Article Title.md",
"type": "clipping|transcription|attachment",
"proposed_title": "Meaningful Title",
"proposed_template": "resource",
"summary": "2-3 sentence summary",
"categorization_hints": ["hint1", "hint2", "hint3"],
"area": "[[๐ฑ Area Name]]",
"project": "[[๐ฏ Project Name]]",
"resourceType": "article|tutorial|reference|thread|video|idea",
"source_format": "article|video|thread|document|audio",
"author": "Author Name",
"source_url": "https://..."
}
```
## Output
Create the resource note and handle the original file.
## Workflow
### Step 0: Discover Template Metadata
Before creating the note, query the resource template for its current structure:
```
para_template_fields({ template: "resource", response_format: "json" })
```
Extract from response:
- `validArgs` โ which args to pass to `para_create`
- `creation_meta.dest` โ destination folder
- `creation_meta.contentTargets` โ section headings for content injection (e.g., `["Layer 1: Captured Notes"]`)
- `creation_meta.sections` โ all body section headings
### Step 1: Create Resource Note
**CRITICAL:** Use frontmatter-only approach. ALL data in `args`, NEVER in `content`.
Use discovered `validArgs` for field names and `creation_meta.dest` for destination:
```
para_create({
template: "resource",
title: proposal.proposed_title,
dest: "<discovered-dest>",
args: {
summary: proposal.summary,
source: proposal.source_url,
resource_type: proposal.resourceType,
source_format: proposal.source_format, // Enables ๐๐ฌ emoji prefix (video, thread, etc.)
// Single area: pass string directly โ "[[๐ฑ Area]]"
// Multiple areas: pass JSON array string โ '["[[๐ฑ Area 1]]", "[[๐ฑ Area 2]]"]'
areas: Array.isArray(proposal.area) ? JSON.stringify(proposal.area) : proposal.area,
projects: Array.is