[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M79TP73X1DSCQQSYSSF29KBK":3,"skill-same:01M79TP73X1DSCQQSYSSF29KBK":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M79TP73X1DSCQQSYSSF29KBK","understand-figma",null,"Analyze a Figma file via the Figma REST API and generate an interactive design knowledge graph (pages, screens, components, component sets, instances, design tokens) with a kind:\"design\" dashboard.","nahid-sparktales\u002Flocus","nahid-sparktales","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F278225096?v=4","01M79TH2FX7X29N8H3X182C80G","01M79TH2H2GAQMG6QSF80M16G8",22,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Funderstand-anything\u002Fupstream\u002Fskills\u002Funderstand-figma\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: understand-figma\ndescription: Analyze a Figma file via the Figma REST API and generate an interactive design knowledge graph (pages, screens, components, component sets, instances, design tokens) with a kind:\"design\" dashboard.\nargument-hint: \"\u003Cfigma-file-url-or-key> [--language \u003Clang>]\"\n---\n\n# \u002Funderstand-figma\n\nAnalyzes a Figma file and produces an interactive design knowledge graph in the existing dashboard.\n\n## Prerequisites\n\n- **`FIGMA_TOKEN`** environment variable — a Figma personal access token (create one at https:\u002F\u002Fwww.figma.com\u002Fsettings). If it is missing, STOP and tell the user:\n  > Set a Figma token first: create one at figma.com\u002Fsettings, then `export FIGMA_TOKEN=\u003Ctoken>`.\n- Node ≥ 22, pnpm ≥ 10.\n\n> **Security:** the token is read only from the environment and travels only in the `X-Figma-Token` request header. Never write it to the graph, `meta.json`, logs, or intermediate files. This skill makes outbound calls to `api.figma.com` — unlike `\u002Funderstand`, it is not fully offline. Tell the user this once.\n\n## Phase 0 — Pre-flight\n\n1. Parse `$ARGUMENTS` for a Figma URL or bare file key (the non-flag token) and an optional `--language \u003Clang>`.\n2. Resolve `PROJECT_ROOT` to the current working directory. **Resolve the data directory `$UA_DIR`** once and reuse it for every read and write below: `UA_DIR=\"$PROJECT_ROOT\u002F$([ -d \"$PROJECT_ROOT\u002F.understand-anything\" ] && echo .understand-anything || echo .ua)\"` — the legacy `.understand-anything\u002F` when it already exists, otherwise the new `.ua\u002F`. Because each phase may run in a fresh shell, carry `$UA_DIR` forward like `$PROJECT_ROOT`, re-resolving it with the same line if a later command block needs it.\n3. Resolve `PLUGIN_ROOT` and ensure core is built (same logic as `\u002Funderstand` Phase 0.1.5). If `packages\u002Fcore\u002Fdist\u002Ffigma\u002Findex.js` is missing, run:\n   ```bash\n   cd \"$PLUGIN_ROOT\" && (pnpm install --frozen-lockfile 2>\u002Fdev\u002Fnull || pnpm install) && pnpm --filter @understand-anything\u002Fcore build\n   ```\n4. `mkdir -p $UA_DIR\u002Fintermediate`.\n\n## Phase 1 — FETCH & PARSE (deterministic)\n\nRun the bundled scan script (`\u003CSKILL_DIR>` is this skill's directory):\n\n```bash\nFIGMA_TOKEN=\"$FIGMA_TOKEN\" node \u003CSKILL_DIR>\u002Ffigma-scan.mjs \"$PROJECT_ROOT\" \"\u003Curl-or-key>\"\n```\n\nIt writes `$UA_DIR\u002Fintermediate\u002Fscan-manifest.json` and prints the node counts. Relay the counts to the user. If it exits non-zero, relay stderr and STOP.\n\n> If the scan prints `UP_TO_DATE`, report \"Design graph is already up to date for this Figma file version\" and STOP. To force a full rebuild, re-run with `UNDERSTAND_FIGMA_FORCE=1` set in the environment.\n\n## Phase 2 — ANALYZE (LLM enrichment)\n\n1. Read `scan-manifest.json`. Group nodes into batches of ~15, grouped by page when possible.\n2. For each batch, dispatch a subagent using the `design-analyzer` agent definition (`agents\u002Fdesign-analyzer.md`). Pass:\n   - the batch of nodes (`id`, `type`, `name`, `figmaMeta`, child names, token usage),\n   - the full list of existing node IDs,\n   - `$INTERMEDIATE_DIR = $UA_DIR\u002Fintermediate`,\n   - the batch number for output naming.\n   The agent writes `analysis-batch-\u003CN>.json`.\n   Append `$LANGUAGE_DIRECTIVE` if `--language` was provided (reuse `\u002Funderstand`'s directive text).\n3. Run up to **5 batches concurrently**. If a batch fails, log a warning and continue — the manifest is a solid base.\n\n## Phase 3 — MERGE\n\n```bash\nnode \u003CSKILL_DIR>\u002Ffigma-merge.mjs \"$PROJECT_ROOT\"\n```\n\nIt combines `scan-manifest.json` + `analysis-batch-*.json`, runs `mergeDesignGraph` (validates, re-attaches `kind:\"design\"`), and writes `knowledge-graph.json` + `meta.json`. Relay the printed stats and any non-`auto-corrected` issues.\n\n## Phase 4 — SAVE & LAUNCH\n\n1. Clean up intermediate files **except** `scan-manifest.json`:\n   ```bash\n   INTER=\"$UA_DIR\u002Fintermediate\"\n   find \"$INTER\" -mindepth 1 -maxdepth 1 -not -name 'scan-manifest.json' -exec rm -rf {} +\n   ```\n2. Report a summary: project name, counts by node type, edges by type, layers, tour steps, and the path `$UA_DIR\u002Fknowledge-graph.json`.\n3. Auto-launch the dashboard by invoking the `\u002Funderstand-dashboard` skill.\n","# \u002Funderstand-figma\n\nAnalyzes a Figma file and produces an interactive design knowledge graph in the existing dashboard.\n\n## Prerequisites\n\n- **`FIGMA_TOKEN`** environment variable — a Figma personal access token (create one at https:\u002F\u002Fwww.figma.com\u002Fsettings). If it is missing, STOP and tell the user:\n  > Set a Figma token first: create one at figma.com\u002Fsettings, then `export FIGMA_TOKEN=\u003Ctoken>`.\n- Node ≥ 22, pnpm ≥ 10.\n\n> **Security:** the token is read only from the environment and travels only in the `X-Figma-Token` request header. Never write it to the graph, `meta.json`, logs, or intermediate files. This skill makes outbound calls to `api.figma.com` — unlike `\u002Funderstand`, it is not fully offline. Tell the user this once.\n\n## Phase 0 — Pre-flight\n\n1. Parse `$ARGUMENTS` for a Figma URL or bare file key (the non-flag token) and an optional `--language \u003Clang>`.\n2. Resolve `PROJECT_ROOT` to the current working directory. **Resolve the data directory `$UA_DIR`** once and reuse it for every read and write below: `UA_DIR=\"$PROJECT_ROOT\u002F$([ -d \"$PROJECT_ROOT\u002F.understand-anything\" ] && echo .understand-anything || echo .ua)\"` — the legacy `.understand-anything\u002F` when it already exists, otherwise the new `.ua\u002F`. Because each phase may run in a fresh shell, carry `$UA_DIR` forward like `$PROJECT_ROOT`, re-resolving it with the same line if a later command block needs it.\n3. Resolve `PLUGIN_ROOT` and ensure core is built (same logic as `\u002Funderstand` Phase 0.1.5). If `packages\u002Fcore\u002Fdist\u002Ffigma\u002Findex.js` is missing, run:\n   ```bash\n   cd \"$PLUGIN_ROOT\" && (pnpm install --frozen-lockfile 2>\u002Fdev\u002Fnull || pnpm install) && pnpm --filter @understand-anything\u002Fcore build\n   ```\n4. `mkdir -p $UA_DIR\u002Fintermediate`.\n\n## Phase 1 — FETCH & PARSE (deterministic)\n\nRun the bundled scan script (`\u003CSKILL_DIR>` is this skill's directory):\n\n```bash\nFIGMA_TOKEN=\"$FIGMA_TOKEN\" node \u003CSKILL_DIR>\u002Ffigma-scan.mjs \"$PROJECT_ROOT\" \"\u003Curl-or-key>\"\n```\n\nIt writes `$UA_DIR\u002Fintermediate\u002Fscan-manifest.json` and prints the node counts. Relay the counts to the user. If it exits non-zero, relay stderr and STOP.\n\n> If the scan prints `UP_TO_DATE`, report \"Design graph is already up to date for this Figma file version\" and STOP. To force a full rebuild, re-run with `UNDERSTAND_FIGMA_FORCE=1` set in the environment.\n\n## Phase 2 — ANALYZE (LLM enrichment)\n\n1. Read `scan-manifest.json`. Group nodes into batches of ~15, grouped by page when possible.\n2. For each batch, dispatch a subagent using the `design-analyzer` agent definition (`agents\u002Fdesign-analyzer.md`). Pass:\n   - the batch of nodes (`id`, `type`, `name`, `figmaMeta`, child names, token usage),\n   - the full list of existing node IDs,\n   - `$INTERMEDIATE_DIR = $UA_DIR\u002Fintermediate`,\n   - the batch number for output naming.\n   The agent writes `analysis-batch-\u003CN>.json`.\n   Append `$LANGUAGE_DIRECTIVE` if `--language` was provided (reuse `\u002Funderstand`'s directive text).\n3. Run up to **5 batches concurrently**. If a batch fails, log a warning and continue — the manifest is a solid base.\n\n## Phase 3 — MERGE\n\n```bash\nnode \u003CSKILL_DIR>\u002Ffigma-merge.mjs \"$PROJECT_ROOT\"\n```\n\nIt combines `scan-manifest.json` + `analysis-batch-*.json`, runs `mergeDesignGraph` (validates, re-attaches `kind:\"design\"`), and writes `knowledge-graph.json` + `meta.json`. Relay the printed stats and any non-`auto-corrected` issues.\n\n## Phase 4 — SAVE & LAUNCH\n\n1. Clean up intermediate files **except** `scan-manifest.json`:\n   ```bash\n   INTER=\"$UA_DIR\u002Fintermediate\"\n   find \"$INTER\" -mindepth 1 -maxdepth 1 -not -name 'scan-manifest.json' -exec rm -rf {} +\n   ```\n2. Report a summary: project name, counts by node type, edges by type, layers, tour steps, and the path `$UA_DIR\u002Fknowledge-graph.json`.\n3. Auto-launch the dashboard by invoking the `\u002Funderstand-dashboard` skill.\n",{"name":5,"description":7,"argument-hint":23},"\u003Cfigma-file-url-or-key> [--language \u003Clang>]","main","f208867dc28cb250af1bb839cc9eb78d5bdf8df1","agent\u002Follama_code\u002Fbuiltin_skills\u002Funderstand-anything\u002Fupstream\u002Fskills\u002Funderstand-figma",1,"https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus","https:\u002F\u002Flocushost.co","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales","2026-10-23 06:15:17",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add nahid-sparktales\u002Flocus --skill understand-figma",{"tool":38,"command":39},"bunx","bunx skills add nahid-sparktales\u002Flocus --skill understand-figma",{"tool":41,"command":42},"pnpm","pnpm dlx skills add nahid-sparktales\u002Flocus --skill understand-figma","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Funderstand-anything\u002Fupstream\u002Fskills\u002Funderstand-figma\u002FSKILL.md",true,[46,52],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"figma-merge.mjs","SCRIPT","脚本",1780,"https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Funderstand-anything\u002Fupstream\u002Fskills\u002Funderstand-figma\u002Ffigma-merge.mjs",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"figma-scan.mjs",4326,"https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Funderstand-anything\u002Fupstream\u002Fskills\u002Funderstand-figma\u002Ffigma-scan.mjs",[57,66,74,82,90,98],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":62,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":18},"01M79TQNH2XPDQRDZCJKZ5FMQY","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","MIT","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fwriting-skills\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fwriting-skills\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":70,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":18},"01M79TQH62FT3Q5WNFSNYPHW5Q","writing-plans","Prepare a saved implementation plan for a substantial multi-step request.","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fwriting-plans\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fwriting-plans\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":78,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":18},"01M79TQBAG6D20EPN45KZ2G1Y5","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fverification-before-completion\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fverification-before-completion\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":86,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":18},"01M79TQ2TH5FW4KQZ5194BB961","vercel-react-best-practices","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fvercel-react-best-practices\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fvercel-react-best-practices\u002FSKILL.md",[],[],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":94,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M79TPXZHP81WAXKW9CVMXACB","using-superpowers","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fusing-superpowers\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fusing-superpowers\u002FSKILL.md",[],[],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":61,"licenseFileUrl":102,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":18},"01M79TPR4TSQ1YXAPRXR0778HV","using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fusing-git-worktrees\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fnahid-sparktales\u002Flocus\u002Fblob\u002Fmain\u002Fagent\u002Follama_code\u002Fbuiltin_skills\u002Fusing-git-worktrees\u002FSKILL.md",[],[]]