Agent Skillsopensquilla/opensquilla › meta-kid-project-planner

meta-kid-project-planner

GitHub

专为儿童及监护人设计的项目规划技能。评估可行性,生成分龄步骤、材料清单及安全建议,并提供家长监督指南。支持记忆管理、天气查询及PPT输出,严格拦截不安全项目并引导至安全替代方案。

src/opensquilla/skills/bundled/meta-kid-project-planner/SKILL.md opensquilla/opensquilla

Trigger Scenarios

儿童或监护人请求规划学校作业、科学展览、爱好套件或创意小项目 涉及火山模型、昆虫观察频道、磁力迷宫或模型火箭等具体创意构思

Install

npx skills add opensquilla/opensquilla --skill meta-kid-project-planner -g -y
More Options

Non-standard path

npx skills add https://github.com/opensquilla/opensquilla/tree/main/src/opensquilla/skills/bundled/meta-kid-project-planner -g -y

Use without installing

npx skills use opensquilla/opensquilla@meta-kid-project-planner

指定 Agent (Claude Code)

npx skills add opensquilla/opensquilla --skill meta-kid-project-planner -a claude-code -g -y

安装 repo 全部 skill

npx skills add opensquilla/opensquilla --all -g -y

预览 repo 内 skill

npx skills add opensquilla/opensquilla --list

SKILL.md

Frontmatter
{
    "kind": "meta",
    "name": "meta-kid-project-planner",
    "always": false,
    "metadata": {
        "opensquilla": {
            "risk": "medium",
            "capabilities": [
                "network",
                "filesystem-write"
            ],
            "clawhub_top100_composition": [
                {
                    "rank": 11,
                    "role": "Find safe, age-appropriate how-to references and material alternatives.",
                    "skill": "Multi Search Engine",
                    "local_skill": "multi-search-engine",
                    "rank_source": "Top ClawHub Skills downloads top100, 2026-05-28"
                },
                {
                    "role": "Plan outdoor child projects around realistic weather constraints.",
                    "skill": "Weather",
                    "local_skill": "weather",
                    "rank_source": "Top ClawHub Skills downloads top100, 2026-05-28"
                },
                {
                    "role": "Add extra safety and feasibility research when the project is more complex.",
                    "skill": "Deep Researcher \/ deep research family",
                    "local_skill": "deep-research",
                    "rank_source": "ClawHub research-skill family, verified via current search results"
                },
                {
                    "role": "Produce kid-facing printable step cards or a simple presentation when requested.",
                    "skill": "PowerPoint \/ PPTX",
                    "local_skill": "pptx",
                    "rank_source": "Top ClawHub Skills downloads top100, 2026-05-28"
                }
            ]
        }
    },
    "triggers": [
        "school project",
        "science fair",
        "kid science",
        "孩子做项目",
        "做一个手工",
        "科学课作业",
        "help my kid build",
        "我要做火山",
        "child diy project",
        "课外动手项目"
    ],
    "provenance": {
        "origin": "opensquilla-original",
        "license": "Apache-2.0"
    },
    "composition": {
        "steps": [
            {
                "id": "preferences",
                "kind": "llm_chat",
                "with": {
                    "task": "Extract the kid-project brief.\n\nUser request:\n{{ inputs.user_message | xml_escape | truncate(1600) }}\n\nClarification policy:\n- If the request already includes a project topic, child age or age\n  band, and deadline or rough time window, set\n  NEEDS_CLARIFICATION: no and MISSING_FIELDS: none.\n- Budget, exact presentation format, exact weather, and exact\n  sunshine direction can remain explicitly unknown assumptions; do\n  not block on them and do not invent precise values.\n- For common school projects, proceed with explicit assumptions or\n  UNKNOWN markers instead of asking a form unless safety or the core\n  topic is unclear.\n\nReturn exactly:\nTOPIC: <short project description>\nAGE_BAND: <PRE_K|EARLY_GRADE|TWEEN|TEEN|UNKNOWN>\nDEADLINE_DAYS: <integer days until due, or UNKNOWN>\nBUDGET_BAND: <SHOESTRING|MODEST|COMFORTABLE|UNKNOWN>\nPARENT_SUPERVISION: <SOLO|LIGHT|HANDS_ON|UNKNOWN>\nLANGUAGE: <en|zh|mixed>\nPROJECT_SAFE: <yes|no>\nUNSAFE_REASON: <one phrase if PROJECT_SAFE is no, else none>\nNEEDS_CLARIFICATION: <yes|no>\nMISSING_FIELDS:\n  - <topic|age_band|deadline|none>\nASSUMPTIONS:\n  - <assumption>\n",
                    "system": "You extract kid-project preferences. Return only the requested contract. Refuse to plan projects that are clearly unsafe (firearms, fireworks, drugs, sharp-weapon making, etc.) by setting PROJECT_SAFE: no."
                },
                "label": "偏好提取",
                "label_en": "Preference extraction"
            },
            {
                "id": "project_clarify",
                "kind": "user_input",
                "when": "'NEEDS_CLARIFICATION: yes' in outputs.preferences and 'PROJECT_SAFE: yes' in outputs.preferences and 'MISSING_FIELDS:\n  - none' not in outputs.preferences",
                "label": "项目澄清",
                "clarify": {
                    "mode": "form",
                    "intro": "再确认几件事,然后给你完整的项目规划(含家长版) \/ A few details and I'll build the kid + parent pack.\n",
                    "fields": [
                        {
                            "name": "topic",
                            "type": "string",
                            "prompt": "项目主题(如:做一座火山模型)\/ Project topic",
                            "required": true,
                            "max_chars": 200,
                            "prompt_en": "Project topic",
                            "prompt_zh": "项目主题(例如:做一座火山模型)"
                        },
                        {
                            "name": "age_band",
                            "type": "enum",
                            "prompt": "孩子年龄段 \/ Child age band (PRE_K = 3-5, EARLY_GRADE = 6-9, TWEEN = 10-12, TEEN = 13-17)",
                            "choices": [
                                "PRE_K",
                                "EARLY_GRADE",
                                "TWEEN",
                                "TEEN"
                            ],
                            "required": true,
                            "prompt_en": "Child age band (PRE_K = 3-5, EARLY_GRADE = 6-9, TWEEN = 10-12, TEEN = 13-17)",
                            "prompt_zh": "孩子年龄段(PRE_K=3-5 岁,EARLY_GRADE=6-9 岁,TWEEN=10-12 岁,TEEN=13-17 岁)"
                        },
                        {
                            "max": 365,
                            "min": 0,
                            "name": "deadline_days",
                            "type": "int",
                            "prompt": "几天后要交(0 = 今天,14 = 两周)\/ Days until due",
                            "default": 14,
                            "prompt_en": "Days until due",
                            "prompt_zh": "几天后要交(0 = 今天,14 = 两周)"
                        },
                        {
                            "name": "budget_band",
                            "type": "enum",
                            "prompt": "预算 \/ Budget",
                            "choices": [
                                "SHOESTRING",
                                "MODEST",
                                "COMFORTABLE"
                            ],
                            "default": "MODEST",
                            "prompt_en": "Budget",
                            "prompt_zh": "预算"
                        },
                        {
                            "name": "parent_supervision",
                            "type": "enum",
                            "prompt": "家长参与程度(SOLO 几乎不参与;LIGHT 偶尔帮一下;HANDS_ON 全程在旁)\/ Parent supervision",
                            "choices": [
                                "SOLO",
                                "LIGHT",
                                "HANDS_ON"
                            ],
                            "default": "LIGHT",
                            "prompt_en": "Parent supervision (SOLO = mostly independent; LIGHT = occasional help; HANDS_ON = close supervision)",
                            "prompt_zh": "家长参与程度(SOLO 几乎不参与;LIGHT 偶尔帮一下;HANDS_ON 全程在旁)"
                        },
                        {
                            "name": "language",
                            "type": "enum",
                            "prompt": "输出语言 \/ Language",
                            "choices": [
                                "en",
                                "zh",
                                "mixed"
                            ],
                            "default": "mixed",
                            "prompt_en": "Output language",
                            "prompt_zh": "输出语言"
                        }
                    ],
                    "intro_en": "A few details and I will build the kid plus guardian project pack.",
                    "intro_zh": "再确认几件事,然后给你完整的项目规划(含家长版)。",
                    "nl_extract": true,
                    "timeout_hours": 48,
                    "cancel_keywords": [
                        "算了",
                        "换个项目",
                        "cancel",
                        "stop"
                    ]
                },
                "label_en": "Project clarification",
                "depends_on": [
                    "preferences"
                ]
            },
            {
                "id": "feasibility",
                "kind": "llm_classify",
                "with": {
                    "text": "Classify project feasibility for this child.\n\nTopic: from preferences \/ clarify.\nPreferences:\n{{ outputs.get('preferences', '') | truncate(800) }}\nClarification:\n{{ inputs.get('collected', {}).get('project_clarify', {}) | tojson }}\n\nDecision rules:\n- INAPPROPRIATE: project involves weapons, fire without\n  supervision possibility, drugs, harmful chemistry,\n  self-harm-adjacent themes, or other clearly unsafe topics\n  for any minor.\n- SAFETY_REVIEW_REQUIRED: project involves heat (small stove,\n  soldering iron), sharp blades (X-Acto knives), electronics\n  with mains voltage, or moderately reactive chemistry. Adult\n  must be present.\n- NEEDS_SHOPPING: project requires materials the household\n  likely does not have (specific kit, model rocket motor,\n  specialty paint).\n- NEEDS_ADULT_HELP: project is age-appropriate but a step\n  requires hands the child does not yet have (cutting balsa\n  wood for a 6-year-old, threading a needle for a 4-year-old).\n- STRAIGHTFORWARD: child can complete the bulk of the project\n  with the declared PARENT_SUPERVISION level.\n"
                },
                "label": "可行性",
                "label_en": "Feasibility",
                "depends_on": [
                    "preferences",
                    "project_clarify"
                ],
                "output_choices": [
                    "STRAIGHTFORWARD",
                    "NEEDS_ADULT_HELP",
                    "NEEDS_SHOPPING",
                    "SAFETY_REVIEW_REQUIRED",
                    "INAPPROPRIATE"
                ]
            },
            {
                "id": "redirect_unsafe",
                "kind": "llm_chat",
                "when": "'PROJECT_SAFE: no' in outputs.preferences or outputs.feasibility == 'INAPPROPRIATE'",
                "with": {
                    "task": "Topic the user asked for:\n{{ inputs.user_message | xml_escape | truncate(400) }}\n\nUnsafe reason (from preferences):\n{{ outputs.get('preferences', '') | truncate(400) }}\n\nWrite:\n1. One sentence acknowledging the curiosity behind the\n   original idea (do not lecture).\n2. One sentence explaining gently why this version isn't a\n   good kid project (concrete, not vague).\n3. Three alternative project ideas that scratch a similar\n   itch but are safe and age-appropriate. Each: one-line\n   topic + one-line \"what the kid will learn \/ make\".\n\nLanguage: match preferences (default zh).\nEnd with a single line:\nUNSAFE_REDIRECT: yes\n",
                    "system": "You write a gentle, non-shaming redirect when a project topic is unsafe or inappropriate. Always offer 3 alternative project ideas that are in the same SPIRIT as the original (curiosity-driven, hands-on, age-appropriate)."
                },
                "label": "安全改写",
                "label_en": "Safety rewrite",
                "depends_on": [
                    "preferences",
                    "feasibility"
                ]
            },
            {
                "id": "recall_past_projects",
                "kind": "tool_call",
                "tool": "memory_search",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "label": "项目召回",
                "label_en": "Project recall",
                "tool_args": {
                    "query": "child project prior projects preferences constraints {{ outputs.get('preferences', '') | truncate(600) }} {{ inputs.user_message | xml_escape | truncate(600) }}",
                    "source": "memory",
                    "max_results": 6
                },
                "depends_on": [
                    "feasibility",
                    "project_clarify"
                ],
                "on_failure": "recall_past_projects_fallback",
                "tool_allowlist": [
                    "memory_search"
                ]
            },
            {
                "id": "recall_past_projects_fallback",
                "kind": "llm_chat",
                "with": {
                    "task": "No durable project memory was read. Continue using only the pasted\nchild age, deadline, materials, budget, supervision, location, and\nproject context. Do not mention runtime errors to the user.\n",
                    "system": "You produce a no-memory fallback note for child project planning."
                },
                "label": "项目召回兜底",
                "label_en": "Project recall fallback"
            },
            {
                "id": "web_research",
                "kind": "skill_exec",
                "when": "outputs.feasibility in ['STRAIGHTFORWARD', 'NEEDS_ADULT_HELP', 'NEEDS_SHOPPING', 'SAFETY_REVIEW_REQUIRED']",
                "with": {
                    "query": "{{ inputs.get('collected', {}).get('project_clarify', {}).get('topic', '') }} {{ outputs.get('preferences', '') | truncate(160) }} {{ inputs.user_message | xml_escape | truncate(160) }} kid science project step-by-step instructions safe",
                    "engines": [
                        "brave",
                        "tavily",
                        "duckduckgo"
                    ],
                    "max_results": 8
                },
                "label": "网页研究",
                "skill": "multi-search-engine",
                "label_en": "Web research",
                "depends_on": [
                    "feasibility"
                ],
                "on_failure": "web_research_fallback"
            },
            {
                "id": "web_research_fallback",
                "kind": "llm_chat",
                "with": {
                    "task": "Web research was not available. Extract the project topic, age,\ndeadline, materials, budget, parent availability, location, light,\nweather-sensitive constraints, and safety needs only from the pasted\nrequest. Do not expose tool names, paths, stack traces, connector\nwording, or runtime failures.\n\nRequest:\n{{ inputs.user_message | xml_escape | truncate(3500) }}\n",
                    "system": "You produce a no-web fallback note for child project planning."
                },
                "label": "网页研究兜底",
                "label_en": "Web research fallback"
            },
            {
                "id": "weather_check",
                "kind": "skill_exec",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and ('outdoor' in (inputs.user_message | lower) or 'balcony' in (inputs.user_message | lower) or 'plant' in (inputs.user_message | lower) or 'garden' in (inputs.user_message | lower) or 'park' in (inputs.user_message | lower) or '户外' in inputs.user_message or '阳台' in inputs.user_message or '植物' in inputs.user_message or '豆芽' in inputs.user_message)",
                "with": {
                    "days": 7,
                    "location": "{{ inputs.user_message | xml_escape | truncate(60) }}"
                },
                "label": "天气检查",
                "skill": "weather",
                "label_en": "Weather check",
                "depends_on": [
                    "feasibility",
                    "project_clarify"
                ],
                "on_failure": "weather_check_fallback"
            },
            {
                "id": "weather_check_fallback",
                "kind": "llm_chat",
                "with": {
                    "task": "Live weather was not verified. Continue using only the pasted\nlocation and the user's supplied light\/outdoor\/indoor context. Do not\ninfer forecasts, temperature ranges, rainfall, balcony direction,\nsunshine hours, or season-specific claims. Do not mention tool\nfailures.\n\nRequest:\n{{ inputs.user_message | xml_escape | truncate(2000) }}\n",
                    "system": "You produce a no-live-weather fallback note for child project planning."
                },
                "label": "天气兜底",
                "label_en": "Weather fallback"
            },
            {
                "id": "project_fact_ledger",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "with": {
                    "task": "Build a strict project fact ledger from the user's request and any\nclarification payload. Durable memory is also a source of facts when\nthe memory output clearly states child profile, prior projects,\npreferences, or parent availability. Ignore memory status prose,\nfile inventory, workspace paths, and runtime\/tool wording; extract\nonly the actual remembered facts.\n\nUser request:\n{{ inputs.user_message | xml_escape | truncate(3500) }}\n\nClarification:\n{{ inputs.get('collected', {}).get('project_clarify', {}) | tojson | truncate(1200) }}\n\nDurable memory \/ past-project recall:\n{{ outputs.get('recall_past_projects', '') | truncate(1800) }}\n\nWeather result or fallback:\n{{ outputs.get('weather_check', '') | truncate(800) }}\n\nReturn exactly:\nOUTPUT_LANGUAGE: <zh|en|mixed>\nPROVIDED_CHILD_CONTEXT:\n  - <age, ability, child preferences, guardian availability, or UNKNOWN>\nPROVIDED_MEMORY_CONTEXT:\n  - <remembered child profile, prior projects, parent constraints, lessons learned, or none>\nPROVIDED_PROJECT_CONTEXT:\n  - <topic, school deadline\/time window, school output, or UNKNOWN>\nPROVIDED_MATERIALS_BUDGET:\n  - <available materials and budget exactly as supplied, or UNKNOWN>\nPROVIDED_LOCATION_LIGHT:\n  - <location and light exactly as supplied, or UNKNOWN>\nVERIFIED_WEATHER:\n  - <verified forecast if actually present in weather result, else none>\nUNKNOWN_DETAILS:\n  - <exact date, balcony direction, exact weather, exact school format, etc.>\nFORBIDDEN_INFERENCES:\n  - <details that must not appear as facts, e.g. exact calendar date,\n    balcony faces south\/east\/west, temperature range, rain forecast,\n    school rule, allergy, fake measurements, tasting\/eating>\n\nRules:\n- If durable memory says the child is a specific age, likes\/dislikes\n  an activity style, has prior projects, or has parent time limits,\n  put those in PROVIDED_CHILD_CONTEXT and PROVIDED_MEMORY_CONTEXT.\n  Do not mark them UNKNOWN.\n- If the current request asks not to repeat previous projects, list\n  remembered prior projects in PROVIDED_MEMORY_CONTEXT so downstream\n  steps can avoid them explicitly.\n- If the source says only \"two weeks later\", mark exact date UNKNOWN.\n- If the source says only \"half-day sun\", mark orientation and hours\n  UNKNOWN. Preserve \"half-day sun\" exactly.\n- If weather was not actually verified, VERIFIED_WEATHER must be none.\n- Never invent sample measurements, dates, allergies, school rules,\n  or local forecasts.\n",
                    "system": "You extract a strict source-fact ledger for a child project plan. You do not write the plan. You separate user-provided facts, durable memory facts, unknowns, and unsafe or unsupported inferences."
                },
                "label": "项目事实台账",
                "label_en": "Project fact ledger",
                "depends_on": [
                    "preferences",
                    "project_clarify",
                    "recall_past_projects",
                    "weather_check"
                ]
            },
            {
                "id": "deep_research",
                "kind": "skill_exec",
                "when": "outputs.feasibility in ['SAFETY_REVIEW_REQUIRED', 'NEEDS_SHOPPING']",
                "with": {
                    "depth": "standard",
                    "query": "{{ inputs.get('collected', {}).get('project_clarify', {}).get('topic', '') }} safe materials children",
                    "max_rounds": 1
                },
                "label": "深度研究",
                "skill": "deep-research",
                "label_en": "Deep research",
                "depends_on": [
                    "feasibility"
                ]
            },
            {
                "id": "outline_steps",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "with": {
                    "task": "Build a step-by-step plan grounded in the topic and research.\n\nTopic + context:\n{{ outputs.get('preferences', '') | truncate(500) }}\n{{ inputs.get('collected', {}).get('project_clarify', {}) | tojson }}\nIf clarification fields are empty, extract topic, age, deadline,\nbudget, materials, parent availability, location, and light from the\nuser request:\n{{ inputs.user_message | xml_escape | truncate(2500) }}\n\nPast projects this child has done (avoid repeats; build on prior learning):\n{{ outputs.get('recall_past_projects', '') | truncate(600) }}\n\nWeather (for outdoor projects — pick a good day):\n{{ outputs.get('weather_check', '') | truncate(400) }}\n\nWeb research:\n{{ outputs.get('web_research', '') | truncate(2500) }}\n\nDeep research (only present if research happened):\n{{ outputs.get('deep_research', '') | truncate(2000) }}\n\nDeadline: {{ inputs.get('collected', {}).get('project_clarify', {}).get('deadline_days', 14) }} days.\nAge band: {{ inputs.get('collected', {}).get('project_clarify', {}).get('age_band', 'EARLY_GRADE') }}.\nParent supervision: {{ inputs.get('collected', {}).get('project_clarify', {}).get('parent_supervision', 'LIGHT') }}.\n\nOutput a markdown numbered list. Each step has:\n- Title (one short sentence, kid-readable verb-first)\n- Time estimate (5-20 min)\n- Adult-needed: yes \/ no (be honest)\n- One supportive sentence (\"You'll get to ...\")\n\nDistribute the steps across the available days. If deadline is\ntight, mark which steps to skip or shorten.\n\nLanguage: match preferences (default mixed).\n",
                    "system": "You break a project into kid-sized steps. Each step takes 5-20 minutes for an unhurried child. No step requires reading more than a paragraph. Use concrete, doable verbs."
                },
                "label": "步骤大纲",
                "label_en": "Step outline",
                "depends_on": [
                    "feasibility",
                    "web_research",
                    "recall_past_projects",
                    "weather_check",
                    "project_clarify",
                    "preferences"
                ]
            },
            {
                "id": "material_list",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "with": {
                    "task": "List materials needed.\n\nStep plan:\n{{ outputs.outline_steps | truncate(2500) }}\n\nBudget band: {{ inputs.get('collected', {}).get('project_clarify', {}).get('budget_band', 'MODEST') }}.\n\nOutput a markdown table with columns:\nitem | quantity | est_cost | shoestring_substitute |\nnotes_if_substitute_changes_outcome.\n\nAdd at the end a bullet line \"Likely you have at home:\" listing\nitems the household probably already owns.\n",
                    "system": "You list materials needed for a kid project. For each material, offer a SHOESTRING substitute the family likely has at home. Always be honest when a substitute genuinely won't work."
                },
                "label": "材料清单",
                "label_en": "Materials list",
                "depends_on": [
                    "outline_steps",
                    "project_clarify",
                    "web_research"
                ]
            },
            {
                "id": "safety_notes",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "with": {
                    "task": "Surface safety notes specific to this project.\n\nFeasibility: {{ outputs.feasibility }}\nAge band: {{ inputs.get('collected', {}).get('project_clarify', {}).get('age_band', 'EARLY_GRADE') }}.\nStep plan (for reference):\n{{ outputs.outline_steps | truncate(2000) }}\n\nOutput bullet points grouped under:\n## ⚠️ Adult must be present for\n## ✋ Stop and call an adult if\n## 🧪 Materials to handle carefully\n\nEach bullet must reference a specific step from the plan (e.g.\n\"Step 4 (mixing): vinegar can spray — wear safety glasses or\nold sunglasses\").\n\nIf feasibility is STRAIGHTFORWARD and the child is TWEEN+,\nkeep this section short (3-5 bullets). If SAFETY_REVIEW_REQUIRED\nor younger child, be thorough (8-12 bullets).\n\nLanguage: match preferences (default mixed).\n",
                    "system": "You surface safety considerations for a kid project. Be specific (not generic 'be careful'). Tailor to the age band. If feasibility says SAFETY_REVIEW_REQUIRED, the safety section is the most important part of the deliverable."
                },
                "label": "安全提示",
                "label_en": "Safety notes",
                "depends_on": [
                    "feasibility",
                    "outline_steps",
                    "project_clarify"
                ]
            },
            {
                "id": "learning_objectives",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "with": {
                    "task": "Write the parent-facing learning objectives.\n\nTopic + step plan:\n{{ outputs.get('preferences', '') | truncate(400) }}\n{{ outputs.outline_steps | truncate(2500) }}\n\nOutput:\n## 👀 What your kid will actually learn\n\n3-5 bullets, each one concrete learning outcome grounded in a\nspecific step. Avoid generic outcomes like \"creativity\" or\n\"problem-solving\" — name the specific concept (e.g. \"How an\nacid-base reaction releases CO2 — they'll see the bubbling\nslowdown when vinegar runs out\").\n\n## 🧠 Conversation prompts during\/after\n3 questions the parent can ask the child to deepen the\nlearning. Each question must be open-ended.\n\nLanguage: match preferences (parent-facing — usually adult\nregister).\n",
                    "system": "You write the parent-facing learning-objective section. This is what the GUARDIAN reads to know what their child is actually getting out of the project beyond the artifact."
                },
                "label": "学习目标",
                "label_en": "Learning goals",
                "depends_on": [
                    "outline_steps",
                    "preferences",
                    "project_clarify"
                ]
            },
            {
                "id": "kid_deck",
                "kind": "skill_exec",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences and inputs.get('collected', {}).get('project_clarify', {}).get('parent_supervision', 'LIGHT') == 'HANDS_ON'",
                "with": {
                    "mode": "create",
                    "title": "🛠️ {{ inputs.get('collected', {}).get('project_clarify', {}).get('topic', 'Your project') }}",
                    "slides": [
                        {
                            "body": "{{ outputs.get('preferences', '') | truncate(400) }}",
                            "title": "What we're going to make"
                        },
                        {
                            "body": "{{ outputs.get('material_list', '') | truncate(800) }}",
                            "title": "What you need (materials)"
                        },
                        {
                            "body": "{{ outputs.get('outline_steps', '') | truncate(1200) }}",
                            "title": "Step-by-step plan"
                        },
                        {
                            "body": "{{ outputs.get('safety_notes', '') | truncate(600) }}",
                            "title": "⚠️ Stop and call grown-up if"
                        }
                    ],
                    "output_path": "kid_project_{{ inputs.get('collected', {}).get('project_clarify', {}).get('topic', 'untitled') | slugify }}.pptx"
                },
                "label": "儿童卡片",
                "skill": "pptx",
                "label_en": "Child card",
                "depends_on": [
                    "outline_steps",
                    "material_list",
                    "safety_notes",
                    "project_clarify",
                    "feasibility"
                ]
            },
            {
                "id": "vocab_cards",
                "kind": "llm_chat",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences and ('vocab' in (inputs.user_message | lower) or 'word card' in (inputs.user_message | lower) or 'bilingual' in (inputs.user_message | lower) or '英语' in inputs.user_message or '双语' in inputs.user_message or '单词' in inputs.user_message)",
                "with": {
                    "task": "Produce 6 vocab cards from the project content.\n\nStep plan:\n{{ outputs.outline_steps | truncate(2000) }}\n\nMaterials:\n{{ outputs.material_list | truncate(800) }}\n\nAge band: {{ inputs.get('collected', {}).get('project_clarify', {}).get('age_band', 'EARLY_GRADE') }}.\n\nFor each card:\n- Term (one English word + one Chinese gloss if the language\n  preference is `mixed`)\n- Kid-friendly definition (one sentence)\n- Example sentence from the project (\"In step 3, the vinegar\n  ACID meets the baking soda BASE...\")\n\nOutput as a markdown numbered list.\n",
                    "system": "You produce a small vocabulary card list grounded in the project content. Each card is age-appropriate."
                },
                "label": "词汇卡",
                "label_en": "Vocabulary card",
                "depends_on": [
                    "outline_steps",
                    "material_list",
                    "project_clarify",
                    "feasibility",
                    "preferences"
                ]
            },
            {
                "id": "deliver_project_pack",
                "kind": "llm_chat",
                "with": {
                    "task": "Assemble the final project pack.\n\nIf the project was unsafe (redirect_unsafe ran), output ONLY\nthe content of {{ outputs.get('redirect_unsafe', '') }} verbatim\nand end with PACK_DELIVERED: no_safety_redirect — nothing else.\n\nOtherwise, synthesize a concise, non-duplicative project pack.\ndo not copy intermediate outputs verbatim when that would repeat\nsafety text, parent instructions, or child instructions. Use the\nintermediate outputs as source material and rewrite them into one\npractical final answer.\n\nOriginal user request:\n{{ inputs.user_message | xml_escape | truncate(3500) }}\n\nProject fact ledger:\n{{ outputs.get('project_fact_ledger', '') | truncate(2500) }}\n\nDurable memory \/ past-project recall:\n{{ outputs.get('recall_past_projects', '') | truncate(1600) }}\n\nSource-constraint audit:\n- Treat the Project fact ledger as the source of truth. If an\n  intermediate step conflicts with it, ignore the intermediate step.\n- Treat PROVIDED_MEMORY_CONTEXT in the fact ledger as user-relevant\n  durable context. Preserve remembered age, child preferences, parent\n  time limits, prior projects, and lessons learned unless the current\n  request explicitly contradicts them.\n- If the fact ledger marks a detail UNKNOWN, leave it unknown or mark\n  it as an assumption; do not fill it with common sense or current\n  date\/time.\n- Preserve every explicit user constraint before adding suggestions:\n  age, deadline, location, available materials, budget,\n  parent time, light\/weather constraints, school deliverable, and\n  requested output sections.\n- Do not replace user-provided materials with unrelated materials.\n  Prefer the user's materials first, then list substitutes only as\n  backups.\n- Do not invent calendar dates, school dates, temperature readings,\n  weather forecasts, or live conditions. Use day numbers or say the\n  exact date is unknown unless the user supplied one or live data was\n  verified.\n- If the user gives only a relative deadline such as \"two weeks\n  later\", do not convert it into a calendar date. Say \"两周后 \/\n  relative deadline supplied; exact date not provided\" and schedule\n  by Day 1...Day 14.\n- Do not invent balcony direction, temperature ranges, sunshine\n  hours, rain forecasts, school rules, allergies, or local weather.\n  Keep weather\/light claims to what the user supplied plus clearly\n  labelled assumptions.\n- Do not prefill observation tables with fake measurements, fake\n  dates, or predicted heights. For templates, leave measurement cells blank or as placeholders\n  such as \"__ cm\" \/ \"[记录]\".\n- Do not suggest tasting or eating the experiment materials unless\n  the user explicitly asks for an edible-food activity and safety has\n  been reviewed. Observation projects should compare appearance,\n  height, color, firmness by sight\/touch if safe, and drawings.\n- Design a comparison experiment when it fits the project and stays\n  within the user's materials, age, time budget, and safety limits.\n  For observation projects, make the variable, control, and data table\n  clear enough for a school presentation.\n- Prefer a clear comparison design for plant\/observation projects:\n  same seed, cup, water, and paper-towel conditions, with only one\n  changed variable such as light exposure. If materials allow, use\n  2-3 labelled groups; if not, make the single-group observation\n  plan still presentation-ready.\n- \"Printable\" means a clean markdown table, worksheet block, or\n  poster-board layout that the user can print from chat. Do not\n  create or refer to PDFs, HTML files, downloads, attachments,\n  local paths, generated artifacts, or workspace files unless the\n  user explicitly asked for a file\/PDF\/export\/download.\n- If the user asks for a beautiful or visually polished plan, make\n  the inline markdown itself polished: a memorable title, a concise\n  visual theme, color\/palette suggestions, kid-facing labels,\n  a drawing-heavy record sheet, and a parent-ready poster layout.\n- If the user asks to start with remembered constraints, include a\n  section titled exactly \"## Remembered constraints I used\" near the\n  top and list only facts found in PROVIDED_MEMORY_CONTEXT or the\n  current request. Do not invent memory.\n\nLanguage and length:\n- Match the user's language. For Chinese requests, write Simplified\n  Chinese throughout, including headings and child-facing text.\n- For Chinese requests, do not use English section headings such as\n  \"For You (the kid)\" or \"For the Grown-up\".\n- Do not include vocabulary cards unless the user explicitly asked\n  for vocab, word cards, bilingual support, 英语, 双语, or 单词.\n- For straightforward home\/school projects, target 1800-3200 Chinese characters\n  or an equivalent compact English length unless the user asks for a\n  long worksheet.\n\nFor Chinese safe projects, use this structure:\n\n# 🛠️ <Project Title>\n\n## 先说假设\nState the age\/deadline\/material\/weather assumptions and which facts\nare not live-verified.\n\n## 项目设计\nExplain the child-friendly project question, final deliverable, and\n2-3 learning goals in plain language.\n\n## 14 天计划\nGive an actionable schedule. Group days into phases when that is\nclearer than 14 long paragraphs, but preserve deadlines, daily\nobservation habits, parent touchpoints, and what the child does.\n\n## 材料和替代品\nSummarize the materials table and substitutions. Keep shopping and\nhousehold alternatives practical.\n\n## 安全和翻车点\nInclude only the safety points that change behavior: stop-and-call\nconditions, allergy\/toxin\/sharp\/hot\/water\/electricity risks where\nrelevant, and 3 common failure modes with fixes.\n\n## 数据记录和画图\nInclude a simple observation template for date, height, leaf\/color,\nwater, light, and one child-friendly chart idea.\n\n## 天气\/光照调整\nUse live weather only if verified; otherwise state \"live weather not\nverified \/ 实时天气未核验\" and give safe indoor\/low-light alternatives.\n\n## 最后展示怎么讲\nProvide a 60-second child script and 3 likely teacher questions with\nsimple answers.\n\n## 家长每晚 20 分钟\nSummarize what the adult checks each night and which steps require\nhands-on help.\n\n## 还缺哪些实时信息\nList only genuinely missing information that would improve the plan,\nwithout asking the user to confirm before using the current answer.\n\nFor English safe projects, use equivalent English headings:\nremembered constraints used when requested, known facts and\nassumptions, project design, 14-day schedule,\nmaterials\/substitutes, safety\/failure modes, printable record\nsheet, poster-board layout, simple science explanation,\nWeather \/ light adjustment, adult 20-minute check, and missing live\ninfo. If the user asked for a visually polished plan, include a\nshort \"visual theme\" subsection.\n\nEnd with a single line:\nPACK_DELIVERED: {{ outputs.feasibility }}\n",
                    "system": "You assemble the final project pack the user will read. Return the complete deliverable inline in chat. Do not create, save, export, attach, or point primarily to an artifact unless the user explicitly asked for a file export with words like PDF, file, export, attachment, or download. Treat requests for a printable worksheet, printable record sheet, or poster layout as print-ready markdown included inline. Never mention workflow, meta-skill, tool names, connector failures, workspace paths, or runtime details."
                },
                "label": "项目包交付",
                "label_en": "Project package delivery",
                "depends_on": [
                    "preferences",
                    "feasibility",
                    "redirect_unsafe",
                    "outline_steps",
                    "material_list",
                    "safety_notes",
                    "learning_objectives",
                    "vocab_cards",
                    "kid_deck",
                    "recall_past_projects",
                    "weather_check",
                    "project_fact_ledger",
                    "project_clarify"
                ]
            },
            {
                "id": "project_pack_audit",
                "kind": "llm_chat",
                "with": {
                    "task": "Rewrite the draft below into the final user-facing project pack.\nPreserve useful content, but enforce the fact ledger strictly. If\nthe draft is only JSON, artifact metadata, download references,\nprocess commentary, or otherwise not a complete user-facing answer,\nrebuild the final project pack from the fact ledger and intermediate\nsource sections below.\n\nUnsafe redirect source:\n{{ outputs.get('redirect_unsafe', '') | truncate(1800) }}\n\nProject fact ledger:\n{{ outputs.get('project_fact_ledger', '') | truncate(2500) }}\n\nDurable memory \/ past-project recall:\n{{ outputs.get('recall_past_projects', '') | truncate(1600) }}\n\nStep plan source:\n{{ outputs.get('outline_steps', '') | truncate(2600) }}\n\nMaterials source:\n{{ outputs.get('material_list', '') | truncate(1600) }}\n\nSafety source:\n{{ outputs.get('safety_notes', '') | truncate(1600) }}\n\nLearning source:\n{{ outputs.get('learning_objectives', '') | truncate(1600) }}\n\nWeather\/light source:\n{{ outputs.get('weather_check', '') | truncate(900) }}\n\nDraft project pack:\n{{ outputs.get('deliver_project_pack', '') | truncate(8000) }}\n\nRequired audit rules:\n- Return markdown only. Never return JSON, artifact metadata, file\n  paths, download links, or attachment notes.\n- If feasibility is INAPPROPRIATE, PROJECT_SAFE is no, or the unsafe\n  redirect source is non-empty, return the unsafe redirect source as\n  the final answer. Preserve its refusal and all safe alternative\n  project ideas. Do not rebuild a normal project pack. End with\n  PACK_DELIVERED: no_safety_redirect.\n- If the draft contains JSON keys such as \"text\", \"artifacts\",\n  \"artifact_ref\", \"download_url\", \"mime\", \"sha256\", \"session_id\",\n  \"created_at\", or \"store\", discard those metadata fields and write\n  a normal markdown answer instead.\n- Remove leading process commentary such as \"perfect match\", \"let me\n  run it\", \"I will run\", \"workflow\", \"meta-skill\", or any similar\n  explanation of how the answer was produced. The first non-empty\n  line must be the user-facing project title, unless the user\n  explicitly requested a different first heading such as\n  \"Remembered constraints I used\".\n- Preserve the user's language. If the request is English, write\n  English-only prose and English headings. If the request is Chinese,\n  write Simplified Chinese throughout.\n- Remove exact calendar dates, weekdays, months, or current-year references\n  unless the user explicitly provided those exact dates. If the user\n  gave only a relative deadline, use Day 1...Day 14 and say exact\n  date not provided.\n- Remove invented balcony direction, temperature ranges, rain forecasts,\n  sunshine hours, school rules, allergies, and local weather claims\n  unless they appear in the fact ledger as verified or user-provided.\n- Remove fake sample measurements, fake dates, and predicted heights.\n  Observation tables must leave measurement cells blank or as\n  placeholders like \"__ cm\" \/ \"[记录]\".\n- Remove tasting\/eating suggestions. For observation projects, compare\n  height, color, firmness by safe touch if appropriate, drawings, and\n  notes.\n- Keep every explicit user constraint from the fact ledger: child age,\n  relative deadline, location, available materials, budget, parent\n  time, light constraint, and requested sections.\n- Keep every clear durable-memory constraint from the fact ledger:\n  remembered age, child preferences, writing tolerance, parent\n  availability, prior projects, and lessons learned. Do not rewrite\n  those fields as UNKNOWN when they appear in PROVIDED_MEMORY_CONTEXT.\n- If the request asks not to repeat previous projects, explicitly\n  avoid or name the prior projects as non-options in one concise\n  sentence.\n- If the user asks to use remembered facts, include a\n  \"## Remembered constraints I used\" section with the remembered\n  age, preferences, writing tolerance, parent time limit, prior\n  projects, and lessons learned when those facts appear in\n  PROVIDED_MEMORY_CONTEXT. Do not say no memory exists when\n  PROVIDED_MEMORY_CONTEXT contains facts.\n- Prefer a clear comparison design when it fits: same seed, cup,\n  water, and paper-towel conditions, with only light exposure changed.\n- Treat \"printable record sheet\" and \"poster board layout\" as inline\n  deliverables unless the user explicitly asked for PDF\/file\/export.\n  Include a clean markdown worksheet\/table with blank boxes,\n  checkboxes, or placeholders; do not claim that a PDF, HTML file,\n  local file, download, or artifact was generated.\n- For visually polished project packs, make the markdown itself\n  beautiful and school-ready: memorable title, visual theme or\n  palette, kid-facing labels, drawing-heavy worksheet, and a poster\n  layout the parent can recreate.\n- Keep the answer compact and immediately usable: target 2500-3600 Chinese characters\n  for Chinese requests. Avoid long daily tables when grouped phases\n  are clearer.\n\nOutput structure for Chinese requests:\n# 🛠️ <title>\n## 先说清楚哪些是已知、哪些未知\n## 项目设计\n## 14 天计划\n## 材料和替代品\n## 安全和翻车点\n## 数据记录和画图\n## 天气\/光照调整\n## 最后展示怎么讲\n## 家长每晚 20 分钟\n## 还缺哪些实时信息\n\nFor English requests, use equivalent English headings only:\n# <Project title>\n## Remembered constraints I used\n## Known facts and assumptions\n## Project design\n## 14-day plan\n## Materials and substitutes\n## Safety and failure modes\n## Printable record sheet\n## Poster-board layout\n## Simple science explanation\n## Weather \/ light adjustment\n## Adult 20-minute check\n## Missing live information\n\nEnd with:\nPACK_DELIVERED: {{ outputs.feasibility }}",
                    "system": "You are the final quality gate for a child project plan. Return only the cleaned final answer that the user should read. Do not explain the audit. Do not mention workflow, meta-skill, tool names, connector failures, workspace paths, or runtime details."
                },
                "label": "项目包审稿",
                "label_en": "Project package review",
                "depends_on": [
                    "deliver_project_pack",
                    "redirect_unsafe",
                    "project_fact_ledger",
                    "recall_past_projects",
                    "outline_steps",
                    "material_list",
                    "safety_notes",
                    "learning_objectives",
                    "weather_check",
                    "feasibility",
                    "preferences"
                ]
            },
            {
                "id": "store_project",
                "kind": "tool_call",
                "tool": "memory_save",
                "when": "outputs.feasibility != 'INAPPROPRIATE' and 'PROJECT_SAFE: yes' in outputs.preferences",
                "label": "存储项目",
                "label_en": "Store project",
                "tool_args": {
                    "mode": "append",
                    "path": "memory\/meta-kid-projects.md",
                    "content": "## Kid project run\n\nPreferences:\n{{ outputs.get('preferences', '') | truncate(1200) }}\n\nFact ledger:\n{{ outputs.get('project_fact_ledger', '') | truncate(1800) }}\n\nFinal project pack excerpt:\n{{ outputs.get('project_pack_audit', '') | truncate(2400) }}"
                },
                "depends_on": [
                    "project_pack_audit",
                    "project_clarify",
                    "feasibility"
                ],
                "tool_allowlist": [
                    "memory_save"
                ]
            }
        ]
    },
    "description": "Use this meta-skill instead of answering directly when a child or their guardian wants to plan a school project, science fair entry, hobby kit, or kid-sized creative venture (volcano model, bug-watching YouTube channel, magnet maze, model rocket). The skill assesses feasibility against the child's age band, builds an age-appropriate step plan, lists materials with budget substitutes, surfaces safety considerations, and produces a parent-facing learning-objective summary so the guardian can supervise meaningfully. Refuses inappropriate or unsafe projects.",
    "policy_tags": [
        "child-safety",
        "age-appropriate"
    ],
    "eval_prompts": [
        {
            "name": "kid-project-baseline",
            "prompt": "Plan a safe age-appropriate science fair project for an elementary-school child with a small budget.",
            "rubric": [
                "Feasibility verdict",
                "Step-by-step plan",
                "Materials and substitutions",
                "Safety notes",
                "Guardian learning objectives"
            ]
        }
    ],
    "meta_priority": 60,
    "final_text_mode": "step:project_pack_audit",
    "output_contract": {
        "artifacts": [
            {
                "name": "project_pack",
                "required": false
            }
        ],
        "unverified": [
            "Local material availability and school-specific rubric details."
        ],
        "assumptions": [
            "Age band and supervision level may be defaulted when absent."
        ],
        "required_sections": [
            "Feasibility verdict",
            "Step-by-step plan",
            "Materials and substitutions",
            "Safety notes",
            "Guardian learning objectives"
        ],
        "append_to_final_text": false
    },
    "preference_keys": [
        "preferred_language",
        "guardian_supervision_level"
    ],
    "request_template": {
        "fields": [
            {
                "name": "project_topic",
                "label_en": "Project topic",
                "label_zh": "项目主题",
                "required": true
            },
            {
                "name": "age_band",
                "default": "early grade",
                "label_en": "Age band",
                "label_zh": "年龄段",
                "required": false,
                "default_en": "early grade",
                "default_zh": "小学低年级"
            },
            {
                "name": "deadline_days",
                "label_en": "Days until due",
                "label_zh": "截止天数",
                "required": false
            },
            {
                "name": "budget_or_material_constraints",
                "label_en": "Budget or material constraints",
                "label_zh": "预算或材料限制",
                "required": false
            },
            {
                "name": "audience",
                "default": "child plus guardian",
                "label_en": "Audience",
                "label_zh": "受众",
                "required": false,
                "default_en": "child plus guardian",
                "default_zh": "孩子和监护人"
            },
            {
                "name": "language",
                "default": "match the user's language",
                "label_en": "Output language",
                "label_zh": "输出语言",
                "required": false,
                "default_en": "match the user's language",
                "default_zh": "跟随用户语言"
            }
        ],
        "outcome": "Age-appropriate project plan with materials, safety notes, and guardian guidance.",
        "outcome_en": "Age-appropriate project plan with materials, safety notes, and guardian guidance.",
        "outcome_zh": "适合孩子年龄的项目计划,包含材料、安全提示和家长指导。",
        "assumptions": [
            "Refuse unsafe or age-inappropriate projects.",
            "Default to modest materials and light guardian supervision when unspecified."
        ],
        "assumptions_en": [
            "Refuse unsafe or age-inappropriate projects.",
            "Default to modest materials and light guardian supervision when unspecified."
        ],
        "assumptions_zh": [
            "拒绝不安全或不适合年龄的项目。",
            "未说明时,默认使用适度材料并安排轻量家长监督。"
        ]
    }
}

meta-kid-project-planner

Junior & guardian persona meta-skill. Turns a child's project idea — "我要做火山", "I want to build a model rocket", "open a YouTube channel about insects" — into a kid-friendly step plan PLUS a parent-friendly oversight pack. The two audiences are concatenated in one markdown deliverable with clear ## 👦 For You (the kid) / ## 👨‍👩‍👧 For the Grown-up sections — a markdown-level workaround for the proposed audience: primitive (portfolio design §4.2).

Composition philosophy — multi-skill bundled orchestration

This meta-skill uses only OpenSquilla-bundled atomic skills plus the five built-in step kinds — no external dependencies. The DAG calls into 5 distinct bundled atomic skills:

Skill Step(s) Role in the DAG
multi-search-engine web_research Find existing how-to guides for the topic
deep-research deep_research Extra round for SAFETY_REVIEW_REQUIRED or NEEDS_SHOPPING feasibility
memory recall_past_projects, store_project Per-child memory: what they've already done; what they did this time. Avoids project repeats and builds a learning trajectory.
weather weather_check When the topic is outdoor / garden / park, pull a 7-day forecast so outline_steps can recommend the best day
pptx kid_deck When PARENT_SUPERVISION: HANDS_ON, produce a printable slide deck for the kid (visual step-by-step + safety callouts)

Step kinds used: llm_chat, llm_classify, user_input, skill_exec, agent.

Vocab card generation is a plain llm_chat step (vocab_cards) grounded in outputs.outline_steps + outputs.material_list — the LLM produces 6 age-appropriate cards directly. No external flashcard skill is required.

Bilingual rendering for LANGUAGE: mixed is also prompt-side in the relevant steps — no separate translation skill required.

Safety design

Three layers of guardrail:

  1. preferences step rejects clearly inappropriate topics by setting PROJECT_SAFE: no in its contract. This is prompt-side; cannot be bypassed by clever phrasing because the model's response is constrained to the return format.
  2. feasibility classifier produces INAPPROPRIATE for any topic that involves weapons, dangerous chemistry, fire-without-adult, self-harm-adjacent themes. INAPPROPRIATE short-circuits the project pack and routes to redirect_unsafe.
  3. redirect_unsafe produces a gentle, non-shaming redirect with 3 alternative project ideas that scratch the same itch safely.

The skill never silently degrades safety — if the topic is unsafe, the deliverable IS the redirect, with PACK_DELIVERED: no_safety_redirect.

Honest limitations (first-wave)

  • audience: is markdown sections, not real two-principal output. When the proposed primitive ships, the kid section can go to a child-facing surface while the parent section goes to the guardian's channel, separately.
  • No persistence of past projects. Each invocation is independent — without state:, the skill cannot remember which projects the child has already done.
  • Vocab cards do not feed an FSRS deck. The vocab_cards step emits a one-shot card list; integrating with a spaced-repetition state machine is reserved for a future meta-spaced-rep-coach.
  • Topic safety relies on prompt-side guardrails. A future dedicated safety-policy step kind would be more robust than prompt-side judgment under adversarial inputs.

Version History

  • 7f72a32 Current 2026-07-05 18:38

Same Skill Collection

src/opensquilla/skills/bundled/advanced-dubbing-studio/SKILL.md
src/opensquilla/skills/bundled/ai-video-script/SKILL.md
src/opensquilla/skills/bundled/audio-cog/SKILL.md
src/opensquilla/skills/bundled/awesome-webpage-image-download/SKILL.md
src/opensquilla/skills/bundled/awesome-webpage-research/SKILL.md
src/opensquilla/skills/bundled/AwesomeWebpageMetaSkill/SKILL.md
src/opensquilla/skills/bundled/cron/SKILL.md
src/opensquilla/skills/bundled/docx/SKILL.md
src/opensquilla/skills/bundled/filesystem/SKILL.md
src/opensquilla/skills/bundled/git-diff/SKILL.md
src/opensquilla/skills/bundled/github/SKILL.md
src/opensquilla/skills/bundled/history-explorer/SKILL.md
src/opensquilla/skills/bundled/html-coder/SKILL.md
src/opensquilla/skills/bundled/html-to-pdf/SKILL.md
src/opensquilla/skills/bundled/http-fetch/SKILL.md
src/opensquilla/skills/bundled/latex-compile/SKILL.md
src/opensquilla/skills/bundled/memory/SKILL.md
src/opensquilla/skills/bundled/music-and-singing-studio/SKILL.md
src/opensquilla/skills/bundled/nano-banana-pro-openrouter/SKILL.md
src/opensquilla/skills/bundled/nano-banana-pro/SKILL.md
src/opensquilla/skills/bundled/nano-pdf/SKILL.md
src/opensquilla/skills/bundled/openrouter-video-generator/SKILL.md
src/opensquilla/skills/bundled/paper-abstract-author/SKILL.md
src/opensquilla/skills/bundled/paper-citation-planner/SKILL.md
src/opensquilla/skills/bundled/paper-experiment-stub/SKILL.md
src/opensquilla/skills/bundled/paper-outline-author/SKILL.md
src/opensquilla/skills/bundled/paper-preference-planner/SKILL.md
src/opensquilla/skills/bundled/paper-refbib-stub/SKILL.md
src/opensquilla/skills/bundled/paper-revision-author/SKILL.md
src/opensquilla/skills/bundled/paper-section-author/SKILL.md
src/opensquilla/skills/bundled/paper-source-curator/SKILL.md
src/opensquilla/skills/bundled/pptx/SKILL.md
src/opensquilla/skills/bundled/seedance-2-prompt/SKILL.md
src/opensquilla/skills/bundled/skill-creator-linter/SKILL.md
src/opensquilla/skills/bundled/skill-creator-proposals/SKILL.md
src/opensquilla/skills/bundled/skill-creator-smoke-test/SKILL.md
src/opensquilla/skills/bundled/srt-from-script/SKILL.md
src/opensquilla/skills/bundled/stack-trace-generic-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-go-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-js-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-python-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-rust-probe/SKILL.md
src/opensquilla/skills/bundled/subtitle-burner/SKILL.md
src/opensquilla/skills/bundled/swe-bench/SKILL.md
src/opensquilla/skills/bundled/text-file-read/SKILL.md
src/opensquilla/skills/bundled/title-card-image/SKILL.md
src/opensquilla/skills/bundled/video-merger/SKILL.md
src/opensquilla/skills/bundled/video-still-animator/SKILL.md
src/opensquilla/skills/bundled/voice-clone-lab/SKILL.md
src/opensquilla/skills/bundled/voice-conversion-studio/SKILL.md
src/opensquilla/skills/bundled/voiceover-studio/SKILL.md
src/opensquilla/skills/bundled/weather/SKILL.md
src/opensquilla/skills/bundled/web-search/SKILL.md
src/opensquilla/skills/bundled/xlsx/SKILL.md
src/opensquilla/skills/exp/meta-arxiv-daily-digest-deck/SKILL.md
src/opensquilla/skills/exp/meta-codereview-current-diff/SKILL.md
src/opensquilla/skills/exp/meta-compliance-audit-bundle/SKILL.md
src/opensquilla/skills/exp/meta-diagram-triangulation/SKILL.md
src/opensquilla/skills/exp/meta-github-pr-watch-digest/SKILL.md
src/opensquilla/skills/exp/meta-issue-to-pr-autopilot/SKILL.md
src/opensquilla/skills/exp/meta-knowledge-base-bootstrap/SKILL.md
src/opensquilla/skills/exp/meta-migration-assistant/SKILL.md
src/opensquilla/skills/exp/meta-multi-format-export-pack/SKILL.md
src/opensquilla/skills/exp/meta-pdf-intelligence/SKILL.md
src/opensquilla/skills/exp/meta-pdf-reformat-pipeline/SKILL.md
src/opensquilla/skills/exp/meta-pre-commit-quality-gate/SKILL.md
src/opensquilla/skills/exp/meta-scheduled-morning-digest/SKILL.md
src/opensquilla/skills/exp/meta-security-review-bundle/SKILL.md
src/opensquilla/skills/exp/meta-spreadsheet-insight/SKILL.md
src/opensquilla/skills/exp/meta-stack-trace-investigator/SKILL.md
src/opensquilla/skills/exp/meta-travel-planner/SKILL.md
src/opensquilla/skills/exp/meta-web-to-pdf-briefing/SKILL.md
tests/_fixtures/meta-paper-write-handwritten.SKILL.md
src/opensquilla/skills/bundled/code-task/SKILL.md
src/opensquilla/skills/bundled/deep-research/SKILL.md
src/opensquilla/skills/bundled/meta-paper-write/SKILL.md
src/opensquilla/skills/bundled/meta-short-drama/SKILL.md
src/opensquilla/skills/bundled/meta-skill-creator/SKILL.md
src/opensquilla/skills/bundled/multi-search-engine/SKILL.md
src/opensquilla/skills/bundled/pdf-toolkit/SKILL.md
src/opensquilla/skills/bundled/skill-creator/SKILL.md
src/opensquilla/skills/bundled/sub-agent/SKILL.md
src/opensquilla/skills/bundled/summarize/SKILL.md
src/opensquilla/skills/bundled/tmux/SKILL.md
src/opensquilla/skills/exp/meta-long-running-build-watchdog/SKILL.md
src/opensquilla/skills/bundled/paper-plot-stub/SKILL.md
src/opensquilla/skills/exp/meta-content-publish-pipeline/SKILL.md
src/opensquilla/skills/exp/meta-home-it-rescue/SKILL.md
src/opensquilla/skills/exp/meta-meeting-to-workflow/SKILL.md
src/opensquilla/skills/exp/meta-research-to-slide-deck/SKILL.md
src/opensquilla/skills/exp/meta-sales-lead-researcher/SKILL.md

Metadata

Files
0
Version
7f72a32
Hash
8ebf7f43
Indexed
2026-07-05 18:38

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-09 13:29
浙ICP备14020137号-1 $bản đồ khách truy cập$