xtrm-tools 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.xtrm/config/pi/extensions/xtrm-ui/format.ts +189 -0
- package/.xtrm/config/pi/extensions/xtrm-ui/index.ts +86 -18
- package/.xtrm/config/pi/extensions/xtrm-ui/package.json +16 -5
- package/.xtrm/config/pi/extensions/xtrm-ui/themes/pidex-dark.json +7 -3
- package/.xtrm/config/pi/extensions/xtrm-ui/themes/pidex-light.json +4 -0
- package/.xtrm/hooks/specialists/specialists-complete.mjs +70 -0
- package/.xtrm/hooks/specialists/specialists-session-start.mjs +105 -0
- package/.xtrm/registry.json +600 -344
- package/.xtrm/skills/default/README.txt +31 -0
- package/.xtrm/skills/default/clean-code/SKILL.md +201 -0
- package/.xtrm/skills/default/creating-service-skills/SKILL.md +433 -0
- package/.xtrm/skills/default/creating-service-skills/references/script_quality_standards.md +425 -0
- package/.xtrm/skills/default/creating-service-skills/references/service_skill_system_guide.md +278 -0
- package/.xtrm/skills/default/creating-service-skills/scripts/bootstrap.py +326 -0
- package/.xtrm/skills/default/creating-service-skills/scripts/deep_dive.py +304 -0
- package/.xtrm/skills/default/creating-service-skills/scripts/scaffolder.py +482 -0
- package/.xtrm/skills/default/deepwiki/SKILL.md +50 -0
- package/.xtrm/skills/default/delegating/SKILL.md +196 -0
- package/.xtrm/skills/default/delegating/config.yaml +210 -0
- package/.xtrm/skills/default/delegating/references/orchestration-protocols.md +41 -0
- package/.xtrm/skills/default/documenting/CHANGELOG.md +23 -0
- package/.xtrm/skills/default/documenting/README.md +148 -0
- package/.xtrm/skills/default/documenting/SKILL.md +113 -0
- package/.xtrm/skills/default/documenting/examples/example_pattern.md +70 -0
- package/.xtrm/skills/default/documenting/examples/example_reference.md +70 -0
- package/.xtrm/skills/default/documenting/examples/example_ssot_analytics.md +64 -0
- package/.xtrm/skills/default/documenting/examples/example_workflow.md +141 -0
- package/.xtrm/skills/default/documenting/references/changelog-format.md +97 -0
- package/.xtrm/skills/default/documenting/references/metadata-schema.md +136 -0
- package/.xtrm/skills/default/documenting/references/taxonomy.md +81 -0
- package/.xtrm/skills/default/documenting/references/versioning-rules.md +78 -0
- package/.xtrm/skills/default/documenting/scripts/bump_version.sh +60 -0
- package/.xtrm/skills/default/documenting/scripts/changelog/__init__.py +0 -0
- package/.xtrm/skills/default/documenting/scripts/changelog/add_entry.py +216 -0
- package/.xtrm/skills/default/documenting/scripts/changelog/bump_release.py +117 -0
- package/.xtrm/skills/default/documenting/scripts/changelog/init_changelog.py +54 -0
- package/.xtrm/skills/default/documenting/scripts/changelog/validate_changelog.py +128 -0
- package/.xtrm/skills/default/documenting/scripts/drift_detector.py +266 -0
- package/.xtrm/skills/default/documenting/scripts/generate_template.py +311 -0
- package/.xtrm/skills/default/documenting/scripts/list_by_category.sh +84 -0
- package/.xtrm/skills/default/documenting/scripts/orchestrator.py +255 -0
- package/.xtrm/skills/default/documenting/scripts/validate_metadata.py +242 -0
- package/.xtrm/skills/default/documenting/templates/CHANGELOG.md.template +13 -0
- package/.xtrm/skills/default/find-docs/SKILL.md +175 -0
- package/.xtrm/skills/default/find-skills/SKILL.md +133 -0
- package/.xtrm/skills/default/github-search/SKILL.md +49 -0
- package/.xtrm/skills/default/gitnexus-debugging/SKILL.md +89 -0
- package/.xtrm/skills/default/gitnexus-impact-analysis/SKILL.md +97 -0
- package/.xtrm/skills/default/gitnexus-pr-review/SKILL.md +163 -0
- package/.xtrm/skills/default/gitnexus-refactoring/SKILL.md +121 -0
- package/.xtrm/skills/default/hook-development/SKILL.md +797 -0
- package/.xtrm/skills/default/hook-development/examples/load-context.sh +55 -0
- package/.xtrm/skills/default/hook-development/examples/quality-check.js +1168 -0
- package/.xtrm/skills/default/hook-development/examples/validate-bash.sh +43 -0
- package/.xtrm/skills/default/hook-development/examples/validate-write.sh +38 -0
- package/.xtrm/skills/default/hook-development/references/advanced.md +527 -0
- package/.xtrm/skills/default/hook-development/references/migration.md +369 -0
- package/.xtrm/skills/default/hook-development/references/patterns.md +412 -0
- package/.xtrm/skills/default/hook-development/scripts/README.md +164 -0
- package/.xtrm/skills/default/hook-development/scripts/hook-linter.sh +153 -0
- package/.xtrm/skills/default/hook-development/scripts/test-hook.sh +252 -0
- package/.xtrm/skills/default/hook-development/scripts/validate-hook-schema.sh +159 -0
- package/.xtrm/skills/default/init-session/SKILL.md +69 -0
- package/.xtrm/skills/default/last30days/SKILL.md +881 -0
- package/.xtrm/skills/default/last30days/scripts/briefing.py +260 -0
- package/.xtrm/skills/default/last30days/scripts/evaluate-synthesis.py +120 -0
- package/.xtrm/skills/default/last30days/scripts/evaluate_search_quality.py +641 -0
- package/.xtrm/skills/default/last30days/scripts/generate-synthesis-inputs.py +53 -0
- package/.xtrm/skills/default/last30days/scripts/last30days.py +2137 -0
- package/.xtrm/skills/default/last30days/scripts/lib/__init__.py +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/bird_x.py +458 -0
- package/.xtrm/skills/default/last30days/scripts/lib/bluesky.py +225 -0
- package/.xtrm/skills/default/last30days/scripts/lib/brave_search.py +329 -0
- package/.xtrm/skills/default/last30days/scripts/lib/cache.py +165 -0
- package/.xtrm/skills/default/last30days/scripts/lib/chrome_cookies.py +265 -0
- package/.xtrm/skills/default/last30days/scripts/lib/cookie_extract.py +295 -0
- package/.xtrm/skills/default/last30days/scripts/lib/dates.py +124 -0
- package/.xtrm/skills/default/last30days/scripts/lib/dedupe.py +290 -0
- package/.xtrm/skills/default/last30days/scripts/lib/entity_extract.py +127 -0
- package/.xtrm/skills/default/last30days/scripts/lib/env.py +807 -0
- package/.xtrm/skills/default/last30days/scripts/lib/exa_search.py +176 -0
- package/.xtrm/skills/default/last30days/scripts/lib/hackernews.py +266 -0
- package/.xtrm/skills/default/last30days/scripts/lib/http.py +174 -0
- package/.xtrm/skills/default/last30days/scripts/lib/instagram.py +365 -0
- package/.xtrm/skills/default/last30days/scripts/lib/models.py +221 -0
- package/.xtrm/skills/default/last30days/scripts/lib/normalize.py +489 -0
- package/.xtrm/skills/default/last30days/scripts/lib/openai_reddit.py +631 -0
- package/.xtrm/skills/default/last30days/scripts/lib/openrouter_search.py +216 -0
- package/.xtrm/skills/default/last30days/scripts/lib/parallel_search.py +139 -0
- package/.xtrm/skills/default/last30days/scripts/lib/polymarket.py +580 -0
- package/.xtrm/skills/default/last30days/scripts/lib/quality_nudge.py +201 -0
- package/.xtrm/skills/default/last30days/scripts/lib/query.py +117 -0
- package/.xtrm/skills/default/last30days/scripts/lib/query_type.py +111 -0
- package/.xtrm/skills/default/last30days/scripts/lib/reddit.py +617 -0
- package/.xtrm/skills/default/last30days/scripts/lib/reddit_enrich.py +325 -0
- package/.xtrm/skills/default/last30days/scripts/lib/reddit_public.py +259 -0
- package/.xtrm/skills/default/last30days/scripts/lib/relevance.py +148 -0
- package/.xtrm/skills/default/last30days/scripts/lib/render.py +1018 -0
- package/.xtrm/skills/default/last30days/scripts/lib/safari_cookies.py +182 -0
- package/.xtrm/skills/default/last30days/scripts/lib/schema.py +843 -0
- package/.xtrm/skills/default/last30days/scripts/lib/score.py +775 -0
- package/.xtrm/skills/default/last30days/scripts/lib/scrapecreators_x.py +182 -0
- package/.xtrm/skills/default/last30days/scripts/lib/setup_wizard.py +186 -0
- package/.xtrm/skills/default/last30days/scripts/lib/tiktok.py +349 -0
- package/.xtrm/skills/default/last30days/scripts/lib/truthsocial.py +183 -0
- package/.xtrm/skills/default/last30days/scripts/lib/ui.py +620 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/LICENSE +21 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/bird-search.mjs +134 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/cookies.js +191 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/features.json +17 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/paginate-cursor.js +37 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/query-ids.json +20 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-features.js +151 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-query-ids.js +264 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-base.js +129 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-constants.js +50 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-features.js +347 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-search.js +157 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-types.js +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-utils.js +511 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/LICENSE +22 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/README.md +29 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts +3 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js +27 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts +11 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js +100 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts +25 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js +104 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts +10 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js +293 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts +10 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js +26 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js +51 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js +60 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js +38 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts +5 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js +33 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts +24 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js +30 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts +11 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js +43 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js +41 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js +53 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js +27 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js +53 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js +60 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js +38 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts +6 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js +257 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js +71 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts +6 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js +173 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts +26 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js +195 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts +121 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js +18 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js +110 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js +32 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js +13 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js +7 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts +5 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js +58 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js +27 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts +2 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js +8 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js.map +1 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/package.json +40 -0
- package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/package.json +13 -0
- package/.xtrm/skills/default/last30days/scripts/lib/websearch.py +401 -0
- package/.xtrm/skills/default/last30days/scripts/lib/xai_x.py +217 -0
- package/.xtrm/skills/default/last30days/scripts/lib/xiaohongshu_api.py +162 -0
- package/.xtrm/skills/default/last30days/scripts/lib/youtube_yt.py +538 -0
- package/.xtrm/skills/default/last30days/scripts/store.py +654 -0
- package/.xtrm/skills/default/last30days/scripts/sync.sh +50 -0
- package/.xtrm/skills/default/last30days/scripts/test-v1-vs-v2.sh +219 -0
- package/.xtrm/skills/default/last30days/scripts/watchlist.py +329 -0
- package/.xtrm/skills/default/planning/SKILL.md +405 -0
- package/.xtrm/skills/default/planning/evals/evals.json +19 -0
- package/.xtrm/skills/default/prompt-improving/README.md +162 -0
- package/.xtrm/skills/default/prompt-improving/SKILL.md +74 -0
- package/.xtrm/skills/default/prompt-improving/references/analysis_commands.md +24 -0
- package/.xtrm/skills/default/prompt-improving/references/chain_of_thought.md +24 -0
- package/.xtrm/skills/default/prompt-improving/references/mcp_definitions.md +20 -0
- package/.xtrm/skills/default/prompt-improving/references/multishot.md +23 -0
- package/.xtrm/skills/default/prompt-improving/references/xml_core.md +60 -0
- package/.xtrm/skills/default/quality-gates/.claude/hooks/hook-config.json +66 -0
- package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.cjs +1286 -0
- package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.py +334 -0
- package/.xtrm/skills/default/quality-gates/.claude/settings.json +3 -0
- package/.xtrm/skills/default/quality-gates/.claude/skills/using-quality-gates/SKILL.md +254 -0
- package/.xtrm/skills/default/quality-gates/README.md +109 -0
- package/.xtrm/skills/default/quality-gates/evals/evals.json +181 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/FINAL-EVAL-SUMMARY.md +75 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-auto-fix-verification/with_skill/outputs/response.md +59 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-mixed-language-project/with_skill/outputs/response.md +60 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/eval-summary.md +105 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/partial-install-python-only/with_skill/outputs/response.md +93 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/python-refactor-request/with_skill/outputs/response.md +104 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/quality-gate-error-fix/with_skill/outputs/response.md +74 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-general-chat/with_skill/outputs/response.md +18 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-math-question/with_skill/outputs/response.md +18 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-unrelated-coding/with_skill/outputs/response.md +56 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/tdd-guard-blocking-confusion/with_skill/outputs/response.md +67 -0
- package/.xtrm/skills/default/quality-gates/workspace/iteration-1/typescript-feature-with-tests/with_skill/outputs/response.md +97 -0
- package/.xtrm/skills/default/scoping-service-skills/SKILL.md +231 -0
- package/.xtrm/skills/default/scoping-service-skills/scripts/scope.py +74 -0
- package/.xtrm/skills/default/service-skills-set/README.md +93 -0
- package/.xtrm/skills/default/service-skills-set/git-hooks/doc_reminder.py +67 -0
- package/.xtrm/skills/default/service-skills-set/git-hooks/skill_staleness.py +194 -0
- package/.xtrm/skills/default/service-skills-set/install-service-skills.py +193 -0
- package/.xtrm/skills/default/service-skills-set/service-registry.json +4 -0
- package/.xtrm/skills/default/service-skills-set/service-skills-readme.md +236 -0
- package/.xtrm/skills/default/service-skills-set/settings.json +37 -0
- package/.xtrm/skills/default/session-close-report/SKILL.md +131 -0
- package/.xtrm/skills/default/skill-creator/LICENSE.txt +202 -0
- package/.xtrm/skills/default/skill-creator/SKILL.md +479 -0
- package/.xtrm/skills/default/skill-creator/agents/analyzer.md +274 -0
- package/.xtrm/skills/default/skill-creator/agents/comparator.md +202 -0
- package/.xtrm/skills/default/skill-creator/agents/grader.md +223 -0
- package/.xtrm/skills/default/skill-creator/assets/eval_review.html +146 -0
- package/.xtrm/skills/default/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.xtrm/skills/default/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.xtrm/skills/default/skill-creator/references/schemas.md +430 -0
- package/.xtrm/skills/default/skill-creator/scripts/__init__.py +0 -0
- package/.xtrm/skills/default/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.xtrm/skills/default/skill-creator/scripts/generate_report.py +326 -0
- package/.xtrm/skills/default/skill-creator/scripts/improve_description.py +248 -0
- package/.xtrm/skills/default/skill-creator/scripts/package_skill.py +136 -0
- package/.xtrm/skills/default/skill-creator/scripts/quick_validate.py +103 -0
- package/.xtrm/skills/default/skill-creator/scripts/run_eval.py +310 -0
- package/.xtrm/skills/default/skill-creator/scripts/run_loop.py +332 -0
- package/.xtrm/skills/default/skill-creator/scripts/utils.py +47 -0
- package/.xtrm/skills/default/specialists-creator/SKILL.md +705 -0
- package/.xtrm/skills/default/specialists-creator/scripts/validate-specialist.ts +41 -0
- package/.xtrm/skills/default/sync-docs/SKILL.md +262 -0
- package/.xtrm/skills/default/sync-docs/evals/evals.json +89 -0
- package/.xtrm/skills/default/sync-docs/references/doc-structure.md +99 -0
- package/.xtrm/skills/default/sync-docs/references/schema.md +103 -0
- package/.xtrm/skills/default/sync-docs/scripts/changelog/add_entry.py +216 -0
- package/.xtrm/skills/default/sync-docs/scripts/context_gatherer.py +405 -0
- package/.xtrm/skills/default/sync-docs/scripts/doc_structure_analyzer.py +495 -0
- package/.xtrm/skills/default/sync-docs/scripts/drift_detector.py +563 -0
- package/.xtrm/skills/default/sync-docs/scripts/validate_doc.py +365 -0
- package/.xtrm/skills/default/sync-docs/scripts/validate_metadata.py +185 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.json +293 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.md +13 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.json +297 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.md +13 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.json +298 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.md +13 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
- package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
- package/.xtrm/skills/default/test-planning/SKILL.md +465 -0
- package/.xtrm/skills/default/test-planning/evals/evals.json +23 -0
- package/.xtrm/skills/default/updating-service-skills/SKILL.md +136 -0
- package/.xtrm/skills/default/updating-service-skills/scripts/drift_detector.py +222 -0
- package/.xtrm/skills/default/using-nodes/SKILL.md +333 -0
- package/.xtrm/skills/default/using-quality-gates/SKILL.md +254 -0
- package/.xtrm/skills/default/using-service-skills/SKILL.md +108 -0
- package/.xtrm/skills/default/using-service-skills/scripts/cataloger.py +74 -0
- package/.xtrm/skills/default/using-service-skills/scripts/skill_activator.py +152 -0
- package/.xtrm/skills/default/using-specialists/SKILL.md +848 -0
- package/.xtrm/skills/default/using-specialists/evals/evals.json +68 -0
- package/.xtrm/skills/default/using-tdd/SKILL.md +410 -0
- package/.xtrm/skills/default/using-xtrm/SKILL.md +127 -0
- package/.xtrm/skills/default/xt-debugging/SKILL.md +149 -0
- package/.xtrm/skills/default/xt-end/SKILL.md +297 -0
- package/.xtrm/skills/default/xt-merge/SKILL.md +326 -0
- package/.xtrm/skills/optional/README.txt +2 -0
- package/.xtrm/skills/optional/architecture-design/PACK.json +11 -0
- package/.xtrm/skills/optional/architecture-design/architecture-patterns/SKILL.md +494 -0
- package/.xtrm/skills/optional/architecture-design/architecture-patterns/references/advanced-patterns.md +391 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/SKILL.md +473 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/prompt-template-library.md +264 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/chain-of-thought.md +412 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/few-shot-learning.md +386 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-optimization.md +428 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-templates.md +484 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/system-prompts.md +195 -0
- package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/.xtrm/skills/optional/architecture-design/subagent-driven-development/SKILL.md +277 -0
- package/.xtrm/skills/optional/architecture-design/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/.xtrm/skills/optional/architecture-design/subagent-driven-development/implementer-prompt.md +113 -0
- package/.xtrm/skills/optional/architecture-design/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/.xtrm/skills/optional/code-quality/PACK.json +12 -0
- package/.xtrm/skills/optional/code-quality/code-review-excellence/SKILL.md +529 -0
- package/.xtrm/skills/optional/code-quality/multi-reviewer-patterns/SKILL.md +127 -0
- package/.xtrm/skills/optional/code-quality/systematic-debugging/SKILL.md +296 -0
- package/.xtrm/skills/optional/code-quality/verification-before-completion/SKILL.md +139 -0
- package/.xtrm/skills/optional/data-engineering/PACK.json +9 -0
- package/.xtrm/skills/optional/data-engineering/data-analyst/SKILL.md +57 -0
- package/.xtrm/skills/optional/research-methods/PACK.json +12 -0
- package/.xtrm/skills/optional/research-methods/academic-researcher/SKILL.md +269 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/SKILL.md +164 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/scripts/frame-template.html +214 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/scripts/helper.js +88 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/scripts/server.cjs +354 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/scripts/start-server.sh +148 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/scripts/stop-server.sh +56 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/.xtrm/skills/optional/research-methods/brainstorming/visual-companion.md +287 -0
- package/.xtrm/skills/optional/research-methods/deep-research/SKILL.md +192 -0
- package/.xtrm/skills/optional/research-methods/fact-checker/SKILL.md +182 -0
- package/.xtrm/skills/optional/security-ops/PACK.json +9 -0
- package/.xtrm/skills/optional/security-ops/security-auditor/SKILL.md +165 -0
- package/.xtrm/skills/optional/xt-optional/PACK.json +16 -0
- package/.xtrm/skills/optional/xt-optional/docker-expert/SKILL.md +409 -0
- package/.xtrm/skills/optional/xt-optional/obsidian-cli/SKILL.md +106 -0
- package/.xtrm/skills/optional/xt-optional/python-testing/SKILL.md +815 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/SKILL.md +209 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/references/api_design_patterns.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/references/backend_security_practices.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/references/database_optimization_guide.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_load_tester.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_scaffolder.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/database_migration_tool.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/SKILL.md +226 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/experiment_designer.py +100 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
- package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/SKILL.md +209 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/references/cicd_pipeline_guide.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/references/deployment_strategies.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/references/infrastructure_as_code.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/deployment_manager.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/pipeline_generator.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/terraform_scaffolder.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/SKILL.md +209 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/references/cryptography_implementation.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/references/penetration_testing_guide.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/references/security_architecture_patterns.md +103 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/scripts/pentest_automator.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/scripts/security_auditor.py +114 -0
- package/.xtrm/skills/optional/xt-optional/senior-security/scripts/threat_modeler.py +114 -0
- package/CHANGELOG.md +16 -0
- package/README.md +5 -0
- package/cli/dist/index.cjs +833 -517
- package/cli/dist/index.cjs.map +1 -1
- package/cli/package.json +1 -1
- package/package.json +3 -1
- package/.xtrm/extensions/auto-session-name/index.ts +0 -29
- package/.xtrm/extensions/auto-session-name/package.json +0 -16
- package/.xtrm/extensions/auto-update/index.ts +0 -71
- package/.xtrm/extensions/auto-update/package.json +0 -16
- package/.xtrm/extensions/beads/index.ts +0 -232
- package/.xtrm/extensions/beads/package.json +0 -19
- package/.xtrm/extensions/compact-header/index.ts +0 -69
- package/.xtrm/extensions/compact-header/package.json +0 -16
- package/.xtrm/extensions/core/adapter.ts +0 -52
- package/.xtrm/extensions/core/guard-rules.ts +0 -100
- package/.xtrm/extensions/core/lib.ts +0 -3
- package/.xtrm/extensions/core/logger.ts +0 -45
- package/.xtrm/extensions/core/package.json +0 -18
- package/.xtrm/extensions/core/runner.ts +0 -71
- package/.xtrm/extensions/core/session-state.ts +0 -59
- package/.xtrm/extensions/custom-footer/index.ts +0 -398
- package/.xtrm/extensions/custom-footer/package.json +0 -19
- package/.xtrm/extensions/custom-provider-qwen-cli/index.ts +0 -363
- package/.xtrm/extensions/custom-provider-qwen-cli/package.json +0 -1
- package/.xtrm/extensions/git-checkpoint/index.ts +0 -53
- package/.xtrm/extensions/git-checkpoint/package.json +0 -16
- package/.xtrm/extensions/lsp-bootstrap/index.ts +0 -134
- package/.xtrm/extensions/lsp-bootstrap/package.json +0 -17
- package/.xtrm/extensions/pi-serena-compact/index.ts +0 -121
- package/.xtrm/extensions/pi-serena-compact/package.json +0 -16
- package/.xtrm/extensions/quality-gates/index.ts +0 -66
- package/.xtrm/extensions/quality-gates/package.json +0 -19
- package/.xtrm/extensions/service-skills/index.ts +0 -108
- package/.xtrm/extensions/service-skills/package.json +0 -19
- package/.xtrm/extensions/session-flow/index.ts +0 -96
- package/.xtrm/extensions/session-flow/package.json +0 -19
- package/.xtrm/extensions/xtrm-loader/index.ts +0 -152
- package/.xtrm/extensions/xtrm-loader/package.json +0 -19
- package/.xtrm/extensions/xtrm-ui/format.ts +0 -93
- package/.xtrm/extensions/xtrm-ui/index.ts +0 -1044
- package/.xtrm/extensions/xtrm-ui/package.json +0 -10
- package/.xtrm/extensions/xtrm-ui/themes/pidex-dark.json +0 -85
- package/.xtrm/extensions/xtrm-ui/themes/pidex-light.json +0 -85
|
@@ -0,0 +1,705 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specialists-creator
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill when creating or fixing a specialist definition. It guides the
|
|
5
|
+
agent through writing a valid `.specialist.json`, choosing supported models,
|
|
6
|
+
validating against the schema, and avoiding common specialist authoring
|
|
7
|
+
mistakes.
|
|
8
|
+
version: 1.1
|
|
9
|
+
synced_at: 236ca5e6
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Specialist Author Guide
|
|
13
|
+
|
|
14
|
+
> Source of truth: `src/specialist/schema.ts` | Runtime: `src/specialist/runner.ts`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## ACTION REQUIRED BEFORE ANYTHING ELSE
|
|
19
|
+
|
|
20
|
+
Run these commands **right now**, before reading further, before writing any JSON, before doing anything else:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pi --list-models
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Read the output. Pick one primary model and one fallback from **different providers**. Then ping both:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pi --model <chosen-primary> --print "ping" # must print: pong
|
|
30
|
+
pi --model <chosen-fallback> --print "ping" # must print: pong
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If a ping fails, pick the next best model in that tier and ping again. **Do not proceed until both return "pong".**
|
|
34
|
+
|
|
35
|
+
Model tiers:
|
|
36
|
+
- **Heavy** (deep reasoning, multi-phase): Opus / Pro / GLM-5
|
|
37
|
+
- **Standard** (authoring, review, codegen): Sonnet / Flash-Pro
|
|
38
|
+
- **Light** (fast context, reports, tests): Haiku / Flash
|
|
39
|
+
|
|
40
|
+
Rules:
|
|
41
|
+
- Always pick the **highest version** in a family (`claude-sonnet-4-6` not `4-5`, `gemini-3.1-pro-preview` not `gemini-2.5-pro`)
|
|
42
|
+
- `model` and `fallback_model` must be **different providers**
|
|
43
|
+
- Never write a model string you have not pinged in this session
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Model Setup (for a new specialist OR "setup my specialists models")
|
|
50
|
+
|
|
51
|
+
### Quick Reference: Specialists CLI
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
specialists list # all specialists + current model
|
|
55
|
+
specialists models # all pi models, flagged with thinking/images, shows current assignments
|
|
56
|
+
specialists edit <name> --model <value> # change primary model
|
|
57
|
+
specialists edit <name> --fallback-model <v> # change fallback model
|
|
58
|
+
specialists edit <name> --model <v> --dry-run # preview without writing
|
|
59
|
+
specialists edit <name> --permission HIGH # change permission level
|
|
60
|
+
specialists status # system health
|
|
61
|
+
specialists doctor # prereq + hook diagnostics
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### Scenario: "Setup my specialists models"
|
|
67
|
+
|
|
68
|
+
When a user asks to set up or re-balance specialist models, run this workflow:
|
|
69
|
+
|
|
70
|
+
#### Step 1 — Inventory
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
specialists list # shows each specialist + its current model
|
|
74
|
+
specialists models # shows all available models on pi, with current assignments marked ←
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Read both outputs carefully:
|
|
78
|
+
- `specialists list` → what specialists exist and what they currently use
|
|
79
|
+
- `specialists models` → what models are available, and which specialists already use each one (the `←` markers show assignments)
|
|
80
|
+
|
|
81
|
+
#### Step 2 — Classify each specialist by tier
|
|
82
|
+
|
|
83
|
+
| Tier | Specialists (typical) | Recommended model class |
|
|
84
|
+
|------|-----------------------|------------------------|
|
|
85
|
+
| **Heavy** — deep reasoning, multi-phase, architecture | `overthinker`, `feature-design`, `bug-hunt`, `planner`, `parallel-review` | Opus / Pro / GLM-5 |
|
|
86
|
+
| **Standard** — code generation, review, authoring, docs | `codebase-explorer`, `specialist-author`, `sync-docs`, `xt-merge` | Sonnet / Flash-Pro |
|
|
87
|
+
| **Light** — fast context, reporting, test runs | `init-session`, `report-generator`, `test-runner` | Haiku / Flash |
|
|
88
|
+
|
|
89
|
+
Adjust tiers based on what the user actually has installed. Custom specialists: read their `description` and `permission_required` to infer tier.
|
|
90
|
+
|
|
91
|
+
#### Step 3 — Select models with provider diversity
|
|
92
|
+
|
|
93
|
+
Rules:
|
|
94
|
+
1. **Pick the highest version in each family** — `glm-5` not `glm-4.7`, `claude-sonnet-4-6` not `4-5`, `gemini-3.1-pro-preview` not `gemini-2.5-pro`
|
|
95
|
+
2. **`model` and `fallback_model` must be different providers** — never stack two anthropic models
|
|
96
|
+
3. **Spread providers across tiers** — don't assign all specialists to anthropic; distribute across anthropic / google-gemini-cli / zai / openai-codex where available
|
|
97
|
+
4. **Match thinking capability to tier** — heavy specialists benefit from `thinking: yes` models
|
|
98
|
+
|
|
99
|
+
Example distribution (based on current `specialists models` output):
|
|
100
|
+
|
|
101
|
+
| Tier | model | fallback_model |
|
|
102
|
+
|------|-------|----------------|
|
|
103
|
+
| Heavy | `anthropic/claude-opus-4-6` | `google-gemini-cli/gemini-3.1-pro-preview` |
|
|
104
|
+
| Standard | `anthropic/claude-sonnet-4-6` | `google-gemini-cli/gemini-3-flash-preview` |
|
|
105
|
+
| Light | `anthropic/claude-haiku-4-5` | `zai/glm-5-turbo` |
|
|
106
|
+
|
|
107
|
+
If anthropic is not available, use `zai/glm-5` (heavy), `google-gemini-cli/gemini-3.1-pro-preview` (standard), `google-gemini-cli/gemini-3-flash-preview` (light).
|
|
108
|
+
|
|
109
|
+
#### Step 4 — ⛔ Ping each chosen model before assigning
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# REQUIRED — do not skip, do not assume a model works without pinging
|
|
113
|
+
pi --model <provider>/<primary-model-id> --print "ping" # must return "pong"
|
|
114
|
+
pi --model <provider>/<fallback-model-id> --print "ping" # must return "pong"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Ping **both** primary and fallback. If ping fails → pick next best in that tier and ping again. Do not assign a model that did not respond.
|
|
118
|
+
|
|
119
|
+
#### Step 5 — Apply with `specialists edit`
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Example: upgrade heavy-tier specialists
|
|
123
|
+
specialists edit overthinker --model anthropic/claude-opus-4-6 --fallback-model google-gemini-cli/gemini-3.1-pro-preview
|
|
124
|
+
specialists edit feature-design --model anthropic/claude-opus-4-6 --fallback-model google-gemini-cli/gemini-3.1-pro-preview
|
|
125
|
+
specialists edit bug-hunt --model anthropic/claude-opus-4-6 --fallback-model google-gemini-cli/gemini-3.1-pro-preview
|
|
126
|
+
|
|
127
|
+
# Standard tier
|
|
128
|
+
specialists edit codebase-explorer --model anthropic/claude-sonnet-4-6 --fallback-model google-gemini-cli/gemini-3-flash-preview
|
|
129
|
+
specialists edit sync-docs --model anthropic/claude-sonnet-4-6 --fallback-model google-gemini-cli/gemini-3-flash-preview
|
|
130
|
+
|
|
131
|
+
# Light tier
|
|
132
|
+
specialists edit init-session --model anthropic/claude-haiku-4-5 --fallback-model zai/glm-5-turbo
|
|
133
|
+
specialists edit report-generator --model anthropic/claude-haiku-4-5 --fallback-model zai/glm-5-turbo
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Use `--dry-run` first to preview any change before writing.
|
|
137
|
+
|
|
138
|
+
#### Step 6 — Verify
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
specialists list # confirm all models updated correctly
|
|
142
|
+
specialists models # confirm assignments look balanced
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### For a new specialist (single model selection)
|
|
148
|
+
|
|
149
|
+
> **See [⛔ MANDATORY FIRST STEP](#-mandatory-first-step--verify-models-before-writing-any-json) at the top of this skill.**
|
|
150
|
+
> Use `pi --list-models` (not `specialists models`) to discover models, ping both before mutating config.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 1. pi --list-models — see exactly what's available on pi right now
|
|
154
|
+
# 2. Pick tier + pick highest version in family
|
|
155
|
+
# 3. pi --model <primary> --print "ping" — must return "pong"
|
|
156
|
+
# 4. pi --model <fallback> --print "ping" — must return "pong"
|
|
157
|
+
# 5. Run scaffold-specialist.ts first (pre-script already wired in specialists-creator)
|
|
158
|
+
# 6. Use sp edit for field-by-field mutations
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Rule:** Never hardcode a model without pinging it. If ping fails, try the next best in that tier.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Quick Start: Scaffold + `sp edit`
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# 1. Create/normalize the specialist JSON with all schema sections present
|
|
169
|
+
node config/skills/specialists-creator/scripts/scaffold-specialist.ts config/specialists/my-specialist.specialist.json
|
|
170
|
+
|
|
171
|
+
# 2. Apply a preset for common model/thinking defaults (optional but preferred)
|
|
172
|
+
sp edit my-specialist --preset standard
|
|
173
|
+
|
|
174
|
+
# 3. Set individual fields via dot.path (primary mutation workflow)
|
|
175
|
+
sp edit my-specialist specialist.metadata.name my-specialist
|
|
176
|
+
sp edit my-specialist specialist.metadata.version 1.0.0
|
|
177
|
+
sp edit my-specialist specialist.execution.model anthropic/claude-sonnet-4-6
|
|
178
|
+
sp edit my-specialist specialist.execution.fallback_model google-gemini-cli/gemini-3.1-pro-preview
|
|
179
|
+
sp edit my-specialist specialist.execution.permission_required READ_ONLY
|
|
180
|
+
|
|
181
|
+
# 4. Use --file only for multiline prompt fields
|
|
182
|
+
sp edit my-specialist specialist.prompt.system --file .tmp/system.prompt.txt
|
|
183
|
+
sp edit my-specialist specialist.prompt.task_template --file .tmp/task-template.prompt.txt
|
|
184
|
+
|
|
185
|
+
# 5. Verify materialized JSON
|
|
186
|
+
sp view my-specialist
|
|
187
|
+
|
|
188
|
+
# 6. Validate schema
|
|
189
|
+
bun skills/specialist-author/scripts/validate-specialist.ts config/specialists/my-specialist.specialist.json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Schema Reference
|
|
195
|
+
|
|
196
|
+
### `specialist.metadata` (required)
|
|
197
|
+
|
|
198
|
+
| Field | Type | Required | Notes |
|
|
199
|
+
|-------|------|----------|-------|
|
|
200
|
+
| `name` | string | yes | kebab-case: `[a-z][a-z0-9-]*` |
|
|
201
|
+
| `version` | string | yes | semver: `1.0.0` |
|
|
202
|
+
| `description` | string | yes | One sentence |
|
|
203
|
+
| `category` | string | yes | Free text (e.g. `workflow`, `analysis`, `codegen`) |
|
|
204
|
+
| `author` | string | no | Optional |
|
|
205
|
+
| `created` | string | no | Optional date |
|
|
206
|
+
| `updated` | string | no | Optional date, quote it: `"2026-03-22"` |
|
|
207
|
+
| `tags` | string[] | no | Optional list |
|
|
208
|
+
|
|
209
|
+
### `specialist.execution` (required)
|
|
210
|
+
|
|
211
|
+
| Field | Type | Default | Notes |
|
|
212
|
+
|-------|------|---------|-------|
|
|
213
|
+
| `model` | string | — | required — ping before using |
|
|
214
|
+
| `fallback_model` | string | — | must be a different provider |
|
|
215
|
+
| `mode` | enum | `auto` | `tool` \| `skill` \| `auto` |
|
|
216
|
+
| `timeout_ms` | number | `120000` | ms |
|
|
217
|
+
| `stall_timeout_ms` | number | — | kill if no event for N ms |
|
|
218
|
+
| `interactive` | boolean | `false` | enable multi-turn keep-alive by default |
|
|
219
|
+
| `response_format` | enum | `text` | `text` \| `json` \| `markdown` |
|
|
220
|
+
| `output_type` | enum | `custom` | `codegen` \| `analysis` \| `review` \| `synthesis` \| `orchestration` \| `workflow` \| `research` \| `custom` |
|
|
221
|
+
| `permission_required` | enum | `READ_ONLY` | see tier table below |
|
|
222
|
+
| `thinking_level` | enum | — | `off` \| `minimal` \| `low` \| `medium` \| `high` \| `xhigh` |
|
|
223
|
+
|
|
224
|
+
**When to use `execution.interactive`**
|
|
225
|
+
|
|
226
|
+
- Set `interactive: true` for specialists intended for multi-turn workflows (`resume`, iterative planning, long investigations).
|
|
227
|
+
- Leave it unset/`false` for one-shot specialists where each run should end immediately.
|
|
228
|
+
- Run-level overrides still apply:
|
|
229
|
+
- CLI: `--keep-alive` enables, `--no-keep-alive` disables.
|
|
230
|
+
- MCP `start_specialist`: `keep_alive` enables, `no_keep_alive` disables.
|
|
231
|
+
- Effective precedence: explicit disable (`--no-keep-alive` / `no_keep_alive`) → explicit enable (`--keep-alive` / `keep_alive`) → `execution.interactive` → one-shot default.
|
|
232
|
+
|
|
233
|
+
**Permission tiers** — controls which pi tools are available:
|
|
234
|
+
|
|
235
|
+
| Level | pi --tools | Use when |
|
|
236
|
+
|-------|-----------|----------|
|
|
237
|
+
| `READ_ONLY` | `read,grep,find,ls` | Read-only analysis, no bash |
|
|
238
|
+
| `LOW` | `+bash` | Inspect/run commands, no file edits |
|
|
239
|
+
| `MEDIUM` | `+edit` | Can edit existing files |
|
|
240
|
+
| `HIGH` | `+write` | Full access — can create new files |
|
|
241
|
+
|
|
242
|
+
**Common pitfall:** `READ_WRITE` is **not** a valid value — use `LOW` or higher.
|
|
243
|
+
|
|
244
|
+
### `specialist.prompt` (required)
|
|
245
|
+
|
|
246
|
+
| Field | Type | Required | Notes |
|
|
247
|
+
|-------|------|----------|-------|
|
|
248
|
+
| `task_template` | string | yes | Template string with `$variable` substitution |
|
|
249
|
+
| `system` | string | no | System prompt / agents.md content |
|
|
250
|
+
| `skill_inherit` | string | no | Single skill folder/file injected via `pi --skill` (Agent Forge compat) |
|
|
251
|
+
| `output_schema` | object | no | JSON schema for structured output — injected into system prompt by runner; post-run validation is warn-only |
|
|
252
|
+
| `examples` | array | no | Few-shot examples |
|
|
253
|
+
|
|
254
|
+
**Output contract precedence (runner-injected):** `response_format` → `output_type` → `output_schema`.
|
|
255
|
+
|
|
256
|
+
**`response_format` behavior**
|
|
257
|
+
- `text`: no report template is injected (raw behavior)
|
|
258
|
+
- `json`: specialist must return one parseable JSON object
|
|
259
|
+
- `markdown`: specialist must use canonical report sections when applicable:
|
|
260
|
+
- `## Summary`
|
|
261
|
+
- `## Status`
|
|
262
|
+
- `## Changes`
|
|
263
|
+
- `## Verification`
|
|
264
|
+
- `## Risks`
|
|
265
|
+
- `## Follow-ups`
|
|
266
|
+
- `## Beads`
|
|
267
|
+
- Optional: `## Architecture`, `## Acceptance Criteria`, `## Machine-readable block`
|
|
268
|
+
|
|
269
|
+
**`output_type` (semantic archetype)**
|
|
270
|
+
- `codegen`: implementation/change manifests
|
|
271
|
+
- `analysis`: architecture/exploration reports
|
|
272
|
+
- `review`: compliance/review verdicts
|
|
273
|
+
- `synthesis`: decision summaries across multiple findings
|
|
274
|
+
- `orchestration`: coordinator actions/state handoffs
|
|
275
|
+
- `workflow`: procedural/operational run outputs
|
|
276
|
+
- `research`: source-backed findings with confidence
|
|
277
|
+
- `custom`: no built-in extension (schema still includes base contract fields in structured modes)
|
|
278
|
+
|
|
279
|
+
**`output_schema` guidance**: Add when output must be machine-readable by downstream consumers (beads notes, feed, orchestrators). The schema is injected into the system prompt and validated post-run with warn-only behavior (never hard-fail in v1).
|
|
280
|
+
|
|
281
|
+
**Mandatory markdown+schema rule:** if `response_format: markdown` and `output_schema` is present, the output must include `## Machine-readable block` containing exactly one JSON object in a single ` ```json ` fenced block. That JSON object is canonical and must match the schema.
|
|
282
|
+
|
|
283
|
+
Standard schemas by specialist type (shown as the `output_schema` object value):
|
|
284
|
+
|
|
285
|
+
executor — change manifest:
|
|
286
|
+
```json
|
|
287
|
+
{
|
|
288
|
+
"type": "object",
|
|
289
|
+
"properties": {
|
|
290
|
+
"status": { "enum": ["success", "partial", "failed"] },
|
|
291
|
+
"files_changed": { "type": "array", "items": { "type": "string" } },
|
|
292
|
+
"symbols_modified": { "type": "array", "items": { "type": "string" } },
|
|
293
|
+
"lint_pass": { "type": "boolean" },
|
|
294
|
+
"tests_pass": { "type": "boolean" },
|
|
295
|
+
"issues_closed": { "type": "array", "items": { "type": "string" } },
|
|
296
|
+
"follow_ups": { "type": "array", "items": { "type": "string" } }
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
explorer — analysis report:
|
|
302
|
+
```json
|
|
303
|
+
{
|
|
304
|
+
"type": "object",
|
|
305
|
+
"properties": {
|
|
306
|
+
"summary": { "type": "string" },
|
|
307
|
+
"key_files": { "type": "array", "items": { "type": "string" } },
|
|
308
|
+
"architecture_notes": { "type": "string" },
|
|
309
|
+
"recommendations": { "type": "array", "items": { "type": "string" } }
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
planner — epic result:
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"type": "object",
|
|
318
|
+
"properties": {
|
|
319
|
+
"epic_id": { "type": "string" },
|
|
320
|
+
"children": { "type": "array", "items": { "type": "string" } },
|
|
321
|
+
"test_issues": { "type": "array", "items": { "type": "string" } },
|
|
322
|
+
"first_task": { "type": "string" }
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### `specialist.skills` (optional)
|
|
328
|
+
|
|
329
|
+
```json
|
|
330
|
+
{
|
|
331
|
+
"skills": {
|
|
332
|
+
"paths": [
|
|
333
|
+
"skills/my-skill/",
|
|
334
|
+
"~/.agents/skills/domain/",
|
|
335
|
+
"skills/notes.md"
|
|
336
|
+
],
|
|
337
|
+
"scripts": [
|
|
338
|
+
{
|
|
339
|
+
"run": "./scripts/pre-check.sh",
|
|
340
|
+
"phase": "pre",
|
|
341
|
+
"inject_output": true
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"run": "bd ready",
|
|
345
|
+
"phase": "pre",
|
|
346
|
+
"inject_output": true
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"run": "./scripts/cleanup.sh",
|
|
350
|
+
"phase": "post"
|
|
351
|
+
}
|
|
352
|
+
]
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
`run` accepts either a **file path** (`./scripts/foo.sh`, `~/scripts/foo.sh`) or a **shell command** (`bd ready`, `git status`). Pre-run validation checks that file paths exist and shell commands are on `PATH`. Shebang typos (e.g. `pytho` instead of `python`) are caught and reported as errors before the session starts.
|
|
358
|
+
|
|
359
|
+
`path` is accepted as a deprecated alias for `run`.
|
|
360
|
+
|
|
361
|
+
### `specialist.capabilities` (optional)
|
|
362
|
+
|
|
363
|
+
Informational declarations used by pre-run validation and future tooling (e.g. `specialists doctor`).
|
|
364
|
+
|
|
365
|
+
```json
|
|
366
|
+
{
|
|
367
|
+
"capabilities": {
|
|
368
|
+
"required_tools": ["bash", "read", "grep", "glob"],
|
|
369
|
+
"external_commands": ["bd", "git", "gh"]
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
`external_commands` causes a hard failure if any binary is not found on `PATH` — the session will not start.
|
|
375
|
+
|
|
376
|
+
### `specialist.output_file` (optional, top-level)
|
|
377
|
+
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"output_file": ".specialists/my-specialist-result.md"
|
|
381
|
+
}
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Writes the final session output to this file path after the session completes. Relative to the working directory.
|
|
385
|
+
|
|
386
|
+
### `specialist.communication` (optional)
|
|
387
|
+
|
|
388
|
+
```json
|
|
389
|
+
{
|
|
390
|
+
"communication": {
|
|
391
|
+
"next_specialists": "planner"
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
Or as an array:
|
|
397
|
+
```json
|
|
398
|
+
{
|
|
399
|
+
"communication": {
|
|
400
|
+
"next_specialists": ["planner", "test-runner"]
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
`next_specialists` declares which specialist(s) should receive this specialist's output as `$previous_result`. Chaining is executed by the caller (e.g. `run_parallel` pipeline) — this field is declarative metadata.
|
|
406
|
+
|
|
407
|
+
### `specialist.validation` (optional)
|
|
408
|
+
|
|
409
|
+
Drives the staleness detection shown in `specialists status` and `specialists list`.
|
|
410
|
+
|
|
411
|
+
| Field | Type | Notes |
|
|
412
|
+
|-------|------|-------|
|
|
413
|
+
| `files_to_watch` | string[] | Paths to monitor. If any file's mtime is newer than `metadata.updated`, the specialist is marked **STALE** |
|
|
414
|
+
| `stale_threshold_days` | number | If the specialist has been STALE for more than N days, escalates to **AGED** |
|
|
415
|
+
| `references` | array | Accepted, currently unused |
|
|
416
|
+
|
|
417
|
+
**Staleness states:**
|
|
418
|
+
|
|
419
|
+
| State | Condition |
|
|
420
|
+
|-------|-----------|
|
|
421
|
+
| `OK` | No watched files changed, or no `files_to_watch` / `updated` set |
|
|
422
|
+
| `STALE` | A watched file's mtime > `metadata.updated` |
|
|
423
|
+
| `AGED` | STALE + days since `updated` > `stale_threshold_days` |
|
|
424
|
+
|
|
425
|
+
```json
|
|
426
|
+
{
|
|
427
|
+
"specialist": {
|
|
428
|
+
"metadata": {
|
|
429
|
+
"updated": "2026-03-01"
|
|
430
|
+
},
|
|
431
|
+
"validation": {
|
|
432
|
+
"files_to_watch": [
|
|
433
|
+
"src/specialist/schema.ts",
|
|
434
|
+
"src/specialist/runner.ts"
|
|
435
|
+
],
|
|
436
|
+
"stale_threshold_days": 30
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
This specialist goes STALE the moment `schema.ts` or `runner.ts` is modified after March 1st, and AGED if that condition persists for more than 30 days.
|
|
443
|
+
|
|
444
|
+
### `specialist.beads_integration` (optional)
|
|
445
|
+
|
|
446
|
+
| Value | Behavior |
|
|
447
|
+
|-------|----------|
|
|
448
|
+
| `auto` (default) | Create tracking bead when permission_required is LOW+ |
|
|
449
|
+
| `always` | Always create a tracking bead |
|
|
450
|
+
| `never` | Never create a tracking bead |
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## Built-in Template Variables
|
|
455
|
+
|
|
456
|
+
These are **always available** in `task_template` — no configuration needed:
|
|
457
|
+
|
|
458
|
+
| Variable | Value |
|
|
459
|
+
|----------|-------|
|
|
460
|
+
| `$prompt` | The user's prompt passed to `use_specialist` |
|
|
461
|
+
| `$cwd` | `process.cwd()` at invocation time |
|
|
462
|
+
| `$pre_script_output` | Stdout of `pre` scripts with `inject_output: true` (empty string if none) |
|
|
463
|
+
|
|
464
|
+
**When invoked via `--bead`** (inputBeadId present):
|
|
465
|
+
|
|
466
|
+
| Variable | Value |
|
|
467
|
+
|----------|-------|
|
|
468
|
+
| `$bead_context` | Full bead content (replaces `$prompt`) |
|
|
469
|
+
| `$bead_id` | The bead ID |
|
|
470
|
+
|
|
471
|
+
**Custom variables** can be passed at invocation time via `--variables key=value` and accessed as `$key`.
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Skills Injection (`skills.paths`)
|
|
476
|
+
|
|
477
|
+
Files listed under `skills.paths` are read and appended to the system prompt at runtime:
|
|
478
|
+
|
|
479
|
+
```json
|
|
480
|
+
{
|
|
481
|
+
"skills": {
|
|
482
|
+
"paths": [
|
|
483
|
+
"skills/specialist-author/SKILL.md",
|
|
484
|
+
".claude/agents.md"
|
|
485
|
+
]
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
Each file is appended as:
|
|
491
|
+
```
|
|
492
|
+
---
|
|
493
|
+
# Skill: <path>
|
|
494
|
+
|
|
495
|
+
<file content>
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
Missing files are silently skipped (no error).
|
|
499
|
+
|
|
500
|
+
`skill_inherit` (in `prompt:`) works the same way but for a single file — it is an Agent Forge compatibility field, appended under `# Service Knowledge`.
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Pre/Post Scripts
|
|
505
|
+
|
|
506
|
+
Scripts run **locally** (not inside the agent session):
|
|
507
|
+
|
|
508
|
+
```json
|
|
509
|
+
{
|
|
510
|
+
"skills": {
|
|
511
|
+
"scripts": [
|
|
512
|
+
{
|
|
513
|
+
"run": "scripts/gather-context.sh",
|
|
514
|
+
"phase": "pre",
|
|
515
|
+
"inject_output": true
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"run": "scripts/notify.sh",
|
|
519
|
+
"phase": "post",
|
|
520
|
+
"inject_output": false
|
|
521
|
+
}
|
|
522
|
+
]
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
- `pre` scripts run before the agent session starts; use `inject_output: true` to surface their stdout.
|
|
528
|
+
- `post` scripts run after the session completes (cleanup, notifications).
|
|
529
|
+
- Timeout: 30 seconds per script.
|
|
530
|
+
- Exit code is captured but does not abort the run.
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## Annotated Full Example
|
|
535
|
+
|
|
536
|
+
```json
|
|
537
|
+
{
|
|
538
|
+
"specialist": {
|
|
539
|
+
"metadata": {
|
|
540
|
+
"name": "code-reviewer",
|
|
541
|
+
"version": "1.0.0",
|
|
542
|
+
"description": "Reviews a PR diff for correctness, style, and security issues.",
|
|
543
|
+
"category": "code-quality",
|
|
544
|
+
"author": "team@example.com",
|
|
545
|
+
"updated": "2026-03-22",
|
|
546
|
+
"tags": ["review", "code-quality", "security"]
|
|
547
|
+
},
|
|
548
|
+
"execution": {
|
|
549
|
+
"mode": "tool",
|
|
550
|
+
"model": "anthropic/claude-sonnet-4-6",
|
|
551
|
+
"fallback_model": "google-gemini-cli/gemini-3.1-pro-preview",
|
|
552
|
+
"timeout_ms": 300000,
|
|
553
|
+
"stall_timeout_ms": 60000,
|
|
554
|
+
"interactive": true,
|
|
555
|
+
"response_format": "markdown",
|
|
556
|
+
"permission_required": "READ_ONLY"
|
|
557
|
+
},
|
|
558
|
+
"prompt": {
|
|
559
|
+
"system": "You are an expert code reviewer. Focus on correctness, maintainability, and security.\nDo NOT modify any files -- output a markdown review only.\n",
|
|
560
|
+
"task_template": "Review the following changes:\n\n$prompt\n\n$pre_script_output\n\nWorking directory: $cwd\n\nOutput a structured markdown review with sections: Summary, Issues, Suggestions.\n",
|
|
561
|
+
"skill_inherit": "skills/code-review/guidelines.md"
|
|
562
|
+
},
|
|
563
|
+
"skills": {
|
|
564
|
+
"paths": [
|
|
565
|
+
"skills/code-review/"
|
|
566
|
+
],
|
|
567
|
+
"scripts": [
|
|
568
|
+
{
|
|
569
|
+
"run": "scripts/get-diff.sh",
|
|
570
|
+
"phase": "pre",
|
|
571
|
+
"inject_output": true
|
|
572
|
+
}
|
|
573
|
+
]
|
|
574
|
+
},
|
|
575
|
+
"capabilities": {
|
|
576
|
+
"required_tools": ["bash", "read"],
|
|
577
|
+
"external_commands": ["git"]
|
|
578
|
+
},
|
|
579
|
+
"communication": {
|
|
580
|
+
"next_specialists": ["sync-docs"]
|
|
581
|
+
},
|
|
582
|
+
"output_file": ".specialists/review.md",
|
|
583
|
+
"beads_integration": "auto"
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## Context Window & Lifecycle Design
|
|
591
|
+
|
|
592
|
+
Specialists run as long-lived Pi sessions. Context management is not optional — ignoring it causes silent quality degradation before any hard limit is hit.
|
|
593
|
+
|
|
594
|
+
### Context rot starts before the window fills
|
|
595
|
+
|
|
596
|
+
Quality degrades as the context grows — compressed early context causes inconsistency, missed facts, and instruction drift. Design for bounded, coherent runs rather than arbitrarily long ones.
|
|
597
|
+
|
|
598
|
+
**Rules when authoring a specialist:**
|
|
599
|
+
- Set `stall_timeout_ms` explicitly for any specialist that may idle between turns (keep-alive/interactive). Without it, a stuck session holds resources indefinitely.
|
|
600
|
+
- Use `thinking_level: low` for orchestration/coordinator specialists that emit structured JSON output — thinking tokens cost context budget without improving structured output quality.
|
|
601
|
+
- For research/explorer specialists: bounded scope per session + `handoff_summary` in `output_schema` > one unbounded session.
|
|
602
|
+
- `interactive: true` specialists must define what "done" looks like in their system prompt — otherwise they drift.
|
|
603
|
+
|
|
604
|
+
### Context metrics are always available
|
|
605
|
+
|
|
606
|
+
`status.json` exposes `metrics.token_usage` (cumulative input+output tokens) and `metrics.turns` on every turn. These are written by 08zd Phase 1 and available to any caller (NodeSupervisor, orchestrator, human).
|
|
607
|
+
|
|
608
|
+
**context_pct formula**: `(cumulative_input_tokens / model_context_window) * 100`
|
|
609
|
+
|
|
610
|
+
Approximate context windows:
|
|
611
|
+
| Model family | Window |
|
|
612
|
+
|-------------|--------|
|
|
613
|
+
| `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-haiku-4-5` | 200k tokens |
|
|
614
|
+
| `gemini-3.1-pro-preview` | 1M tokens |
|
|
615
|
+
| `qwen3.5-plus`, `dashscope/qwen3.5-plus` | 128k tokens |
|
|
616
|
+
| `zai/glm-5`, `zai/glm-5-turbo` | 128k tokens |
|
|
617
|
+
|
|
618
|
+
### For Node members specifically
|
|
619
|
+
|
|
620
|
+
NodeSupervisor injects `member_health` into the coordinator resume prompt on **every turn** — not just at warning thresholds. This is by design: the coordinator needs continuous data to make proactive rotation decisions before quality degrades.
|
|
621
|
+
|
|
622
|
+
When authoring a specialist intended to run as a Node member:
|
|
623
|
+
- Include a `handoff_summary` field in `output_schema` so context can be transferred on rotation
|
|
624
|
+
- Keep system prompts concise — the NodeSupervisor will inject additional context on each resume
|
|
625
|
+
- `thinking_level: low` or `off` for coordinator-class specialists; higher levels for deep analysis members
|
|
626
|
+
|
|
627
|
+
### Design checklist for long-running specialists
|
|
628
|
+
|
|
629
|
+
Before finalising a specialist that uses `interactive: true` or is expected to run many turns:
|
|
630
|
+
|
|
631
|
+
```
|
|
632
|
+
[ ] stall_timeout_ms set (not relying on timeout_ms alone)
|
|
633
|
+
[ ] thinking_level set appropriately for the output type
|
|
634
|
+
[ ] output_schema includes handoff_summary or equivalent for rotation
|
|
635
|
+
[ ] system prompt has explicit termination condition ("you are done when...")
|
|
636
|
+
[ ] task_template doesn't inject large static blobs that could be fetched on demand
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
## Common Errors and Fixes
|
|
642
|
+
|
|
643
|
+
| Zod Error | Cause | Fix |
|
|
644
|
+
|-----------|-------|-----|
|
|
645
|
+
| `Must be kebab-case` | `name` has uppercase or spaces | Use `my-specialist` not `MySpecialist` |
|
|
646
|
+
| `Must be semver` | `version: "v1.0"` | Use `"version": "1.0.0"` (no `v` prefix) |
|
|
647
|
+
| `Invalid enum value ... 'READ_WRITE'` | Wrong permission value | Use `READ_ONLY`, `LOW`, `MEDIUM`, or `HIGH` |
|
|
648
|
+
| `Invalid enum value ... 'auto'` on permission_required | Using `auto` for permission_required | `auto` is only valid for `beads_integration` |
|
|
649
|
+
| `Required` on `task_template` | `task_template` missing from `prompt` | Add `task_template` (even if just `"$prompt"`) |
|
|
650
|
+
| `Required` on `model` | `model` missing from `execution` | Add a model string |
|
|
651
|
+
| `Required` on `description` | Missing `description` in `metadata` | Add description string |
|
|
652
|
+
| `Required` on `category` | Missing `category` in `metadata` | Add category string |
|
|
653
|
+
| Silently ignored / no output | JSON valid but `task_template` doesn't use `$prompt` | Add `$prompt` to `task_template` |
|
|
654
|
+
| `defaults` key unrecognized | Using `defaults` top-level key | Remove it; use `--variables` at invocation or built-ins |
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
## File Placement
|
|
659
|
+
|
|
660
|
+
Specialists are discovered from three scopes (highest priority first):
|
|
661
|
+
|
|
662
|
+
1. **Project**: `<project-root>/specialists/*.specialist.json`
|
|
663
|
+
2. **User**: `~/.agents/specialists/*.specialist.json`
|
|
664
|
+
3. **System**: package-bundled specialists
|
|
665
|
+
|
|
666
|
+
Name your file `<metadata.name>.specialist.json`.
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
## Validation Workflow
|
|
671
|
+
|
|
672
|
+
A bundled validator is included with this skill so the agent does not need to reconstruct the `bun -e` one-liner from memory. It prints `OK <file>` on success and a field-by-field error list on failure.
|
|
673
|
+
|
|
674
|
+
```bash
|
|
675
|
+
# 1. MANDATORY: discover + ping models (see top of this skill)
|
|
676
|
+
pi --list-models
|
|
677
|
+
pi --model <provider>/<primary-model-id> --print "ping" # must return "pong"
|
|
678
|
+
pi --model <provider>/<fallback-model-id> --print "ping" # must return "pong"
|
|
679
|
+
|
|
680
|
+
# 2. Scaffold first (fills missing schema sections/fields)
|
|
681
|
+
node config/skills/specialists-creator/scripts/scaffold-specialist.ts config/specialists/my-specialist.specialist.json
|
|
682
|
+
|
|
683
|
+
# 3. Mutate with sp edit (dot.path + presets)
|
|
684
|
+
sp edit my-specialist --preset standard
|
|
685
|
+
sp edit my-specialist specialist.execution.model <provider>/<primary-model-id>
|
|
686
|
+
sp edit my-specialist specialist.execution.fallback_model <provider>/<fallback-model-id>
|
|
687
|
+
|
|
688
|
+
# 4. Use --file only for multiline prompt fields
|
|
689
|
+
sp edit my-specialist specialist.prompt.system --file .tmp/system.prompt.txt
|
|
690
|
+
sp edit my-specialist specialist.prompt.task_template --file .tmp/task-template.prompt.txt
|
|
691
|
+
|
|
692
|
+
# 5. Verify rendered config
|
|
693
|
+
sp view my-specialist
|
|
694
|
+
|
|
695
|
+
# 6. Validate schema with the bundled helper
|
|
696
|
+
bun skills/specialist-author/scripts/validate-specialist.ts config/specialists/my-specialist.specialist.json
|
|
697
|
+
|
|
698
|
+
# 7. List to confirm discovery
|
|
699
|
+
specialists list
|
|
700
|
+
|
|
701
|
+
# 8. Smoke test
|
|
702
|
+
specialists run my-specialist --prompt "ping" --no-beads
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
If you need the underlying implementation, read `skills/specialist-author/scripts/validate-specialist.ts`. It is a thin Bun/TypeScript wrapper over `parseSpecialist()` from `src/specialist/schema.ts`, which keeps the helper cross-platform for Windows, macOS, and Linux.
|