[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KFN8W4MXRATTWA9P3F79Y":3,"skill-same:01M71KFN8W4MXRATTWA9P3F79Y":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":37,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M71KFN8W4MXRATTWA9P3F79Y","follow-up-tasks",null,"Propose follow-up tasks before marking your current task as complete.","clawdsolana\u002FOpenClawd","clawdsolana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279036008?v=4","01M71JTVF9FNGKE2SVJRPTQM31","OpenClawd","01M71JTVGCKWBSS8ZYC1HYWVA5",2,"MIT","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Ffollow-up-tasks\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"follow up tasks","tasks","follow up","up","as","follow-up","complete","task","2026-11-10 10:12:30",false,"---\nname: follow-up-tasks\ndescription: Propose follow-up tasks before marking your current task as complete.\n---\n\n# Follow-Up Tasks\n\nAs you work on your current task, watch for additional work that should be done as follow-up tasks — separate units of work related to your current task but outside its scope.\n\nCategorize each follow-up task using one of these categories:\n\n- **`incomplete_scope`**: Parts of the original request that you intentionally deferred to keep the current task focused\n- **`next_steps`**: Functionality or features users would want next, whether directly extending what you just built or addressing unmet needs in the project\n- **`tech_debt`**: Code quality issues, hardcoded values, shortcuts, or refactoring opportunities you noticed while working\n- **`test_gaps`**: Tests that should be written but aren't part of the current task's deliverable\n\nWrite titles for non-technical users — lead with impact, not implementation - especially for tech debt and test gaps.\n\nBefore submitting, review each title by asking: \"Would a non-technical user understand what this means and why they'd want it?\" If not, rewrite it. Examples:\n\n- \"Store recipes in a database with full CRUD support\" -> \"Let users add, edit, and delete their own recipes\"\n- \"Add server-side validation for recipe API endpoints\" -> \"Prevent broken recipes from being saved\"\n\nBefore marking your task as complete, propose up to 3 follow-up tasks by calling `proposeFollowUpTasks` — NOT `bulkCreateProjectTasks` or `createProjectTask`. The `proposeFollowUpTasks` callback automatically links follow-ups to your current task as the parent — required for correct task hierarchy. Submit them all in a single call with clear titles, descriptions, and a `category` (required). Keep only the highest-impact follow-ups. Each description should include relevant file paths and enough context for another agent to pick up the work independently.\n\nOnly propose follow-ups that represent genuine, actionable work.\n\n- Do not propose follow-ups that overlap with tasks already visible in the project task list\n- Do not propose follow-ups for trivial items or things already in your current task's scope\n- Do not propose follow-ups for agent housekeeping (e.g. updating replit.md, adding comments, improving documentation — handle those inline)\n\nIf your current task already has downstream tasks depending on it (listed in your task assignment), skip calling `proposeFollowUpTasks` entirely — those tasks already cover the planned next steps.\n\n`proposeFollowUpTasks` is **one-shot per assigned project task** — not per turn, not per subfeature, not per `mark_task_complete` cycle. The system rejects duplicate calls. If you're marking complete again after more work on the same assigned task, review your previously proposed follow-ups; if any are now stale, call `markFollowUpTaskObsolete` to retract them.\n\n## Examples\n\n```javascript\n\u002F\u002F Log the result so you have taskRefs for later use with markFollowUpTaskObsolete\nconst followUps = await proposeFollowUpTasks({\n    tasks: [\n        {\n            title: \"Create a slide deck for onboarding demos\",\n            category: \"next_steps\",\n            description: `# Create a slide deck for onboarding demos\n\n## What & Why\nThe project has no presentation materials for demos or onboarding. A short slide deck would make it easier to explain the product flow to teammates and stakeholders.\n\n## Done looks like\n- A polished slide deck exists for demoing the product\n- The deck explains the core user flow and value proposition clearly\n\n## Relevant files\n- \\`src\u002Fpages\u002Findex.tsx\\`\n- \\`src\u002Fcontent\u002Fmarketing-copy.ts\\``\n        },\n        {\n            title: \"Save recipes permanently so they aren't lost on refresh\",\n            category: \"tech_debt\",\n            description: `# Save recipes permanently so they aren't lost on refresh\n\n## What & Why\nRecipe data is hardcoded in a static file. Users who add or edit recipes will lose their changes on page refresh. Moving data to the database ensures persistence.\n\n## Done looks like\n- Recipes are stored in the database and served via API\n- Users can add, edit, and delete recipes without losing data\n\n## Relevant files\n- \\`src\u002Fdata\u002Frecipes.ts\\` (current static data)\n- \\`lib\u002Fdb\u002Fsrc\u002Fschema\u002Frecipes.ts\\` (new schema)`\n        }\n    ]\n});\nconsole.log(followUps.map(t => ({ taskRef: t.taskRef, title: t.title })));\n\n\u002F\u002F Remove an obsolete follow-up\nawait markFollowUpTaskObsolete({ taskRef: \"#12\" });\n```\n","# Follow-Up Tasks\n\nAs you work on your current task, watch for additional work that should be done as follow-up tasks — separate units of work related to your current task but outside its scope.\n\nCategorize each follow-up task using one of these categories:\n\n- **`incomplete_scope`**: Parts of the original request that you intentionally deferred to keep the current task focused\n- **`next_steps`**: Functionality or features users would want next, whether directly extending what you just built or addressing unmet needs in the project\n- **`tech_debt`**: Code quality issues, hardcoded values, shortcuts, or refactoring opportunities you noticed while working\n- **`test_gaps`**: Tests that should be written but aren't part of the current task's deliverable\n\nWrite titles for non-technical users — lead with impact, not implementation - especially for tech debt and test gaps.\n\nBefore submitting, review each title by asking: \"Would a non-technical user understand what this means and why they'd want it?\" If not, rewrite it. Examples:\n\n- \"Store recipes in a database with full CRUD support\" -> \"Let users add, edit, and delete their own recipes\"\n- \"Add server-side validation for recipe API endpoints\" -> \"Prevent broken recipes from being saved\"\n\nBefore marking your task as complete, propose up to 3 follow-up tasks by calling `proposeFollowUpTasks` — NOT `bulkCreateProjectTasks` or `createProjectTask`. The `proposeFollowUpTasks` callback automatically links follow-ups to your current task as the parent — required for correct task hierarchy. Submit them all in a single call with clear titles, descriptions, and a `category` (required). Keep only the highest-impact follow-ups. Each description should include relevant file paths and enough context for another agent to pick up the work independently.\n\nOnly propose follow-ups that represent genuine, actionable work.\n\n- Do not propose follow-ups that overlap with tasks already visible in the project task list\n- Do not propose follow-ups for trivial items or things already in your current task's scope\n- Do not propose follow-ups for agent housekeeping (e.g. updating replit.md, adding comments, improving documentation — handle those inline)\n\nIf your current task already has downstream tasks depending on it (listed in your task assignment), skip calling `proposeFollowUpTasks` entirely — those tasks already cover the planned next steps.\n\n`proposeFollowUpTasks` is **one-shot per assigned project task** — not per turn, not per subfeature, not per `mark_task_complete` cycle. The system rejects duplicate calls. If you're marking complete again after more work on the same assigned task, review your previously proposed follow-ups; if any are now stale, call `markFollowUpTaskObsolete` to retract them.\n\n## Examples\n\n```javascript\n\u002F\u002F Log the result so you have taskRefs for later use with markFollowUpTaskObsolete\nconst followUps = await proposeFollowUpTasks({\n    tasks: [\n        {\n            title: \"Create a slide deck for onboarding demos\",\n            category: \"next_steps\",\n            description: `# Create a slide deck for onboarding demos\n\n## What & Why\nThe project has no presentation materials for demos or onboarding. A short slide deck would make it easier to explain the product flow to teammates and stakeholders.\n\n## Done looks like\n- A polished slide deck exists for demoing the product\n- The deck explains the core user flow and value proposition clearly\n\n## Relevant files\n- \\`src\u002Fpages\u002Findex.tsx\\`\n- \\`src\u002Fcontent\u002Fmarketing-copy.ts\\``\n        },\n        {\n            title: \"Save recipes permanently so they aren't lost on refresh\",\n            category: \"tech_debt\",\n            description: `# Save recipes permanently so they aren't lost on refresh\n\n## What & Why\nRecipe data is hardcoded in a static file. Users who add or edit recipes will lose their changes on page refresh. Moving data to the database ensures persistence.\n\n## Done looks like\n- Recipes are stored in the database and served via API\n- Users can add, edit, and delete recipes without losing data\n\n## Relevant files\n- \\`src\u002Fdata\u002Frecipes.ts\\` (current static data)\n- \\`lib\u002Fdb\u002Fsrc\u002Fschema\u002Frecipes.ts\\` (new schema)`\n        }\n    ]\n});\nconsole.log(followUps.map(t => ({ taskRef: t.taskRef, title: t.title })));\n\n\u002F\u002F Remove an obsolete follow-up\nawait markFollowUpTaskObsolete({ taskRef: \"#12\" });\n```\n",{"name":5,"description":7},"main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Ffollow-up-tasks",3,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd","https:\u002F\u002Fsolanaclawd.com\u002Fopenclawd","https:\u002F\u002Fgithub.com\u002Fclawdsolana","https:\u002F\u002Fmusebook.trade","Welcome to Open Clawd. The future of Ai on and off chain. Bringing webMCP to web 3 using X402, A2A, MPP and so much more!","2026-08-01 09:30:51",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add clawdsolana\u002FOpenClawd --skill follow-up-tasks",{"tool":48,"command":49},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill follow-up-tasks",{"tool":51,"command":52},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill follow-up-tasks","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Ffollow-up-tasks\u002FSKILL.md",true,[56],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},".fingerprint","OTHER","其他",32,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Ffollow-up-tasks\u002F.fingerprint",[63,96,124,149,159,183],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":74,"publishedAt":95},"01M71KRBD0W01EAXJ8YM4M1SJ2","solana-dev","End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for React\u002FNext.js UI. Prefer @solana\u002Fkit for all new client\u002FRPC\u002Ftransaction code. When legacy dependencies require web3.js, isolate it behind @solana\u002Fweb3-compat (or @solana\u002Fweb3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor\u002FPinocchio programs, Codama-based client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],"solana dev","dev","solana","Wallet","end","testing","hooks","kit","new","when","web3","code","react","next","2026","playbook","security","ui","fallback","framework","2026-11-10 10:56:23",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":105,"publishedAt":95},"01M71KR8QPESSY61SVE8ZTFNVT","xurl","A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发",[98,106,107,108,109,110,111,84,112,113,114,115,116,117,118,119,120,121,122,123],"posts","Media","x api","search","send","tap","you","api","cli","read","install","cli tool","endpoint","brew","for","manage","tool","twitter",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":95},"01M71KR6FSXV88YDKWP7NBY3SH","wurk-integration","WURK API integration for monetizing agents with x402 payments on Solana\u002FBase - create social jobs, custom challenges, and agent help tasks","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fwurk-integration\u002FSKILL.md",[130],{"categoryNo":103,"categoryName":104,"taxonomyType":72,"taxonomyTypeDesc":73},[132,133,134,135,136,137,20,138,113,139,140,141,142,143,144,145,120,146,147,148],"wurk","wurk integration","integration","x402","social","payments","team","create","social-jobs","command","agent-help","custom-jobs","clawd","safe","api integration","custom","true",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":95},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[151,121,156,157,158],"configuration","application","restart",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":95},"01M71KR1VM0F5GPEQDNG5J7A0H","web-search","Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[166,109,167,168,169,120,170,171,172,173,174,175,176,113,177,178,179,180,181,182],"web search","web","fetch","api documentation","real-time","time","profiles","design","use","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":95},"01M71KQZN5MR1JFQHG5GWXYAHS","weather","Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[185,190,120,191,174,84,192,113,193,194,195,196,197,198,199,200,201,202],"get","open","analysis","alerts","temperature","curl","via","help","about","https","location","data","user"]