From asana-workflow
Creates a Product Requirements Document from one or more content sources. Sources can be passed as arguments — Asana task URL, Jira URL, Notion URL, Google Drive URL, Figma URL, Loom URL, any web URL, a local file or folder path, free-text problem statement, or left empty to read the current folder. Use this skill whenever the user wants to draft, write, or generate a PRD — "/create-prd", "write a PRD", "draft a PRD for X", "create a product requirements doc", "spec this out", "turn this one-pager into a PRD", or pastes a source URL (Asana / Notion / Figma / Drive / Loom / any web link) and asks for a PRD. Also triggers when the user describes a feature in free text and asks for a structured spec.
How this skill is triggered — by the user, by Claude, or both
Slash command
/asana-workflow:create-prdThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produces a complete, well-formatted PRD. Follow the four phases below **in strict order**. Never skip or reorder phases.
Produces a complete, well-formatted PRD. Follow the four phases below in strict order. Never skip or reorder phases.
Before asking the user anything, ingest every source provided. Sources come from the skill arguments and/or the current folder.
Inspect each argument or input for its type and fetch accordingly:
| Source type | How to detect | How to ingest |
|---|---|---|
| Asana task or project | app.asana.com in URL | Use the asana-api skill (the plugin's only sanctioned Asana entry point) to fetch the task/project and all subtasks |
| Jira issue or board | atlassian.net/browse/ or atlassian.net/jira/ | Use Atlassian MCP tools to fetch the issue and linked items |
| Notion page or database | notion.so or notion.site in URL | Use Notion MCP tools to fetch the page or database content |
| Google Drive file or folder | drive.google.com or docs.google.com | Use Google Drive MCP tools to fetch the document or list the folder |
| Figma file or frame | figma.com in URL | Use Figma MCP (get_design_context, get_metadata, get_screenshot) |
| Loom video | loom.com in URL | WebFetch the page and try to extract transcript/summary text. If nothing usable comes back, ask the user to paste the transcript directly, or share a Loom Doc / AI-summary URL — do not proceed treating the Loom URL as ingested |
| Any other URL | starts with http:// or https:// | WebFetch the URL and read the content |
| Local file path | path resolves to a regular file (e.g. ./spec.pdf, /Users/.../onepager.pdf) | Read the file directly (PDF, HTML, Markdown, docs) |
| Local folder path | path resolves to a directory (e.g. ./specs/, a bare directory name) | List and read all files in that folder (PDFs, HTML, Markdown, docs) |
| Free-text seed | argument is non-empty text and doesn't match any rule above (e.g. "build a faster checkout") | Treat the text as an initial problem-statement seed. Skip URL/file ingestion. Before moving on, ask the user whether to also discover local files in the current working directory — if yes, read them the same way as the "No argument given" row. Carry the seed into Phase 2 and Phase 3, where every detail gets gathered conversationally. |
| No argument given | — | Read every file in the current working directory |
Important: Only fall back to reading local files when no argument was provided at all. If any URL or remote source is given as an argument, do NOT also read the current working directory — only ingest the explicitly provided sources. Local files are read when: (a) a local path was explicitly passed as an argument, or (b) no argument was given at all.
If multiple sources are provided (e.g. an Asana task URL + a Figma URL + a local folder), ingest all of them before moving on.
From any source, pull out:
After ingesting all provided sources, ask:
"Are there any other resources I should read before we start? For example: Figma designs, backend or API specs, Notion docs, Loom walkthroughs, or anything else not already shared?"
If additional URLs or paths are provided, fetch and read them before continuing.
If a resource is referenced but doesn't have a URL yet (e.g. Figma designs not started, backend spec not written), note it — it will appear in the PRD as explicitly missing, not omitted.
Work through every topic below, one question at a time, waiting for the answer before asking the next. Never batch questions. Never assume an answer.
If at any point the user says "leave that as TBD" or "not decided yet", note it as a genuine TBD — this is the only valid reason for a TBD in the final document.
references/html-template.md.Only start writing once every question in Phase 3 has been answered.
All PRDs are written under <repo-root>/docs/cortex/product-requirements/. Resolve <repo-root> from the git repository root (git rev-parse --show-toplevel), not the current working directory. Create the directory if it doesn't exist.
Filename: <YYYY-MM-DD>-<reasonable-title>.<ext> — all lowercase, hyphen-separated, dated first so listings sort chronologically. Examples:
2026-06-03-vast-serving-revamp.md2026-06-03-onboarding-redesign.htmlIf both HTML and Markdown are produced, they share the same base name and only the extension differs (e.g., 2026-06-03-feature-x.md and 2026-06-03-feature-x.html in the same folder).
If a file with the same name already exists, append -v2, -v3, etc. until the name is free (e.g., 2026-06-03-feature-x-v2.md).
HTML (default): Self-contained file with inline styles. Follow every component pattern in references/html-template.md exactly — CSS block, section structure, feature cards, tables, scope chips, requirement pills, and link cards. All links must be real <a> tags pointing to actual files or URLs. Never write placeholder link text inside an anchor.
Markdown: Use the same section order as HTML. Tables for KPIs, dependencies, open questions. No TBDs in feature bodies — open questions table only.
Plain text / PDF-ready: Clean prose with clear section headings. Same structure. Tables as plain ASCII. Delivered as .md for the user to copy into their tool of choice.
| Mistake | Prevention |
|---|---|
| Writing TBD without asking | Ask first. Always. |
| Assuming system A drives system B | Confirm every relationship explicitly |
| KPIs without measurement method | "How we measure" is mandatory for every metric |
| Omitting a resource because it has no URL yet | List it in Links with "Not yet available" — never silently skip it |
| Figma link missing from a feature card | Always show the Figma slot; mark "Design not yet available" if no URL |
| Treating prototype as 100% spec | Ask "is this demo-only?" when in doubt |
| Missing error states and fallback behaviour | Always ask what happens when things go wrong |
| Skipping "already built vs being built" | Ask for every dependency |
| Not asking for URLs upfront | Phase 2 must collect URLs for every resource before the interview starts |
| Batching questions | One at a time, wait for the answer |
| Asking about output format last | Ask it first, in 3.0, before the rest of the interview |
npx claudepluginhub siroc-labs/cortex --plugin asana-workflowCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.