@rosetears/aili-pi 0.1.0
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/LICENSE +21 -0
- package/README.md +109 -0
- package/THIRD_PARTY_NOTICES.md +64 -0
- package/extensions/index.ts +6 -0
- package/install.sh +5 -0
- package/manifests/adapter-evidence.json +45 -0
- package/manifests/capabilities.json +124 -0
- package/manifests/live-verification.json +26 -0
- package/manifests/provenance.json +71 -0
- package/manifests/roles.json +474 -0
- package/manifests/sbom.json +7797 -0
- package/manifests/skill-compatibility.json +8100 -0
- package/manifests/subagent-provenance.json +37 -0
- package/package.json +91 -0
- package/prompts/build.md +8 -0
- package/prompts/define.md +8 -0
- package/prompts/ideate.md +8 -0
- package/prompts/local-review.md +8 -0
- package/prompts/ship.md +8 -0
- package/roles/agent-evaluator.md +47 -0
- package/roles/ai-regression-scout.md +47 -0
- package/roles/browser-qa-runner.md +47 -0
- package/roles/code-reviewer.md +47 -0
- package/roles/code-scout.md +47 -0
- package/roles/convergence-reviewer.md +55 -0
- package/roles/doc-researcher.md +47 -0
- package/roles/e2e-artifact-runner.md +47 -0
- package/roles/implementer.md +47 -0
- package/roles/opensource-sanitizer.md +47 -0
- package/roles/plan-auditor.md +47 -0
- package/roles/pr-test-analyzer.md +47 -0
- package/roles/security-auditor.md +47 -0
- package/roles/silent-failure-reviewer.md +47 -0
- package/roles/spec-miner.md +47 -0
- package/roles/test-coverage-reviewer.md +47 -0
- package/roles/test-engineer.md +48 -0
- package/roles/web-performance-auditor.md +47 -0
- package/roles/web-researcher.md +47 -0
- package/scripts/apply-adapter-evidence.ts +73 -0
- package/scripts/bootstrap.sh +180 -0
- package/scripts/generate-provenance.ts +143 -0
- package/scripts/local-package-e2e.ts +51 -0
- package/scripts/sync-roles.ts +213 -0
- package/scripts/sync-skills.ts +356 -0
- package/scripts/validate-runtime.ts +11 -0
- package/skills/academic-paper-review/SKILL.md +81 -0
- package/skills/agents-md-initialization/SKILL.md +121 -0
- package/skills/agents-md-initialization/references/agents-template.md +83 -0
- package/skills/agents-md-initialization/references/agents_md.py +215 -0
- package/skills/ai-regression-scout/SKILL.md +24 -0
- package/skills/aili-delivery-flow/SKILL.md +125 -0
- package/skills/aili-delivery-flow/references/artifact-contracts.md +138 -0
- package/skills/aili-delivery-flow/references/backend-routing.md +40 -0
- package/skills/aili-delivery-flow/references/build-execution-loop.md +113 -0
- package/skills/aili-delivery-flow/references/build-goal-mode.md +3 -0
- package/skills/aili-delivery-flow/references/direct-vs-delegated-work.md +38 -0
- package/skills/aili-delivery-flow/references/implementation-packages.md +54 -0
- package/skills/aili-delivery-flow/references/lifecycle.md +127 -0
- package/skills/aili-delivery-flow/references/protocols/acceptance-test-plan.md +18 -0
- package/skills/aili-delivery-flow/references/protocols/alignment-questionnaire.md +10 -0
- package/skills/aili-delivery-flow/references/protocols/closeout-report.md +101 -0
- package/skills/aili-delivery-flow/references/protocols/compact-evidence-pack.md +46 -0
- package/skills/aili-delivery-flow/references/protocols/idea-brief.md +10 -0
- package/skills/aili-delivery-flow/references/protocols/implementation-package.md +53 -0
- package/skills/aili-delivery-flow/references/protocols/research-evidence-pack.md +19 -0
- package/skills/aili-delivery-flow/references/protocols/review-report.md +7 -0
- package/skills/aili-delivery-flow/references/protocols/spec-draft.md +12 -0
- package/skills/aili-delivery-flow/references/protocols/subagent-result.md +60 -0
- package/skills/aili-delivery-flow/references/protocols/subagent-task-packet.md +29 -0
- package/skills/aili-delivery-flow/references/protocols/worktree-context.md +109 -0
- package/skills/aili-delivery-flow/references/questionnaire-policy.md +62 -0
- package/skills/aili-delivery-flow/references/review-repair-loop.md +16 -0
- package/skills/aili-delivery-flow/references/test-document-policy.md +35 -0
- package/skills/android-native-dev/SKILL.md +722 -0
- package/skills/android-native-dev/references/accessibility.md +209 -0
- package/skills/android-native-dev/references/adaptive-screens.md +231 -0
- package/skills/android-native-dev/references/design-style-guide.md +365 -0
- package/skills/android-native-dev/references/functional-requirements.md +229 -0
- package/skills/android-native-dev/references/motion-system.md +203 -0
- package/skills/android-native-dev/references/performance-stability.md +223 -0
- package/skills/android-native-dev/references/privacy-security.md +244 -0
- package/skills/android-native-dev/references/testing.md +554 -0
- package/skills/android-native-dev/references/visual-design.md +246 -0
- package/skills/api-and-interface-design/SKILL.md +318 -0
- package/skills/browser-qa/SKILL.md +32 -0
- package/skills/browser-testing-with-devtools/SKILL.md +323 -0
- package/skills/build-failure-repair/SKILL.md +49 -0
- package/skills/chart-visualization/SKILL.md +73 -0
- package/skills/ci-cd-and-automation/SKILL.md +353 -0
- package/skills/code-review-and-quality/SKILL.md +375 -0
- package/skills/code-review-quality-gates/SKILL.md +132 -0
- package/skills/code-simplification/SKILL.md +371 -0
- package/skills/comment-accuracy-review/SKILL.md +37 -0
- package/skills/consulting-analysis/SKILL.md +69 -0
- package/skills/context-engineering/SKILL.md +375 -0
- package/skills/coverage-review/SKILL.md +24 -0
- package/skills/data-analysis/SKILL.md +74 -0
- package/skills/deprecation-and-migration/SKILL.md +222 -0
- package/skills/documentation-and-adrs/SKILL.md +330 -0
- package/skills/e2e-artifact-handling/SKILL.md +30 -0
- package/skills/evidence-scoped-retrospective/SKILL.md +156 -0
- package/skills/explain-by-allegory/SKILL.md +99 -0
- package/skills/flutter-dev/SKILL.md +162 -0
- package/skills/flutter-dev/references/animations.md +497 -0
- package/skills/flutter-dev/references/bloc-state.md +281 -0
- package/skills/flutter-dev/references/forms.md +656 -0
- package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
- package/skills/flutter-dev/references/localization.md +510 -0
- package/skills/flutter-dev/references/networking.md +566 -0
- package/skills/flutter-dev/references/performance.md +305 -0
- package/skills/flutter-dev/references/platform-specific.md +417 -0
- package/skills/flutter-dev/references/project-structure.md +273 -0
- package/skills/flutter-dev/references/riverpod-state.md +232 -0
- package/skills/flutter-dev/references/testing.md +364 -0
- package/skills/flutter-dev/references/widget-patterns.md +233 -0
- package/skills/frontend-dev/SKILL.md +468 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
- package/skills/frontend-dev/references/env-setup.md +33 -0
- package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
- package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
- package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
- package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
- package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
- package/skills/frontend-dev/references/minimax-voice-catalog.md +685 -0
- package/skills/frontend-dev/references/motion-recipes.md +407 -0
- package/skills/frontend-dev/references/troubleshooting.md +85 -0
- package/skills/frontend-dev/scripts/minimax_image.py +137 -0
- package/skills/frontend-dev/scripts/minimax_music.py +157 -0
- package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
- package/skills/frontend-dev/scripts/minimax_video.py +187 -0
- package/skills/frontend-dev/templates/generator_template.js +223 -0
- package/skills/frontend-dev/templates/viewer.html +599 -0
- package/skills/frontend-ui-engineering/SKILL.md +367 -0
- package/skills/fullstack-dev/SKILL.md +819 -0
- package/skills/fullstack-dev/references/api-design.md +444 -0
- package/skills/fullstack-dev/references/auth-flow.md +165 -0
- package/skills/fullstack-dev/references/db-schema.md +706 -0
- package/skills/fullstack-dev/references/django-best-practices.md +466 -0
- package/skills/fullstack-dev/references/environment-management.md +78 -0
- package/skills/fullstack-dev/references/release-checklist.md +278 -0
- package/skills/fullstack-dev/references/technology-selection.md +254 -0
- package/skills/fullstack-dev/references/testing-strategy.md +404 -0
- package/skills/git-workflow-and-versioning/SKILL.md +446 -0
- package/skills/github-evidence-triage/SKILL.md +115 -0
- package/skills/harness-evolution/SKILL.md +59 -0
- package/skills/harness-evolution/references/activation-matrix.md +13 -0
- package/skills/harness-evolution/references/approval-policy.md +20 -0
- package/skills/harness-evolution/references/change-report-template.md +33 -0
- package/skills/harness-evolution/references/component-taxonomy.md +19 -0
- package/skills/harness-evolution/references/verdict-policy.md +13 -0
- package/skills/harness-issue-triage/SKILL.md +72 -0
- package/skills/harness-issue-triage/references/component-diagnosis.md +25 -0
- package/skills/harness-issue-triage/references/triage-report-template.md +34 -0
- package/skills/harness-optimization-audit/SKILL.md +125 -0
- package/skills/idea-refine/SKILL.md +191 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/SKILL.upstream.md +178 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/examples.md +238 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/frameworks.md +99 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/refinement-criteria.md +113 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/scripts/idea-refine.upstream.sh +15 -0
- package/skills/incremental-implementation/SKILL.md +252 -0
- package/skills/ios-application-dev/SKILL.md +212 -0
- package/skills/ios-application-dev/references/accessibility.md +259 -0
- package/skills/ios-application-dev/references/graphics-animation.md +350 -0
- package/skills/ios-application-dev/references/layout-system.md +199 -0
- package/skills/ios-application-dev/references/metal-shader.md +178 -0
- package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
- package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
- package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
- package/skills/ios-application-dev/references/system-integration.md +401 -0
- package/skills/ios-application-dev/references/uikit-components.md +297 -0
- package/skills/local-review-gate/SKILL.md +207 -0
- package/skills/local-review-gate/references/addyosmani-code-review-rubric.md +33 -0
- package/skills/local-review-gate/references/codex-github-compatibility.md +26 -0
- package/skills/local-review-gate/references/ecc-code-review-adaptation.md +40 -0
- package/skills/local-review-gate/references/graphify-local-review.md +33 -0
- package/skills/local-review-gate/references/orchestration-adaptation.md +51 -0
- package/skills/local-review-gate/references/review-repair-lane-adaptation.md +46 -0
- package/skills/local-review-gate/references/upstream-provenance.md +61 -0
- package/skills/mature-project-pattern-research/SKILL.md +155 -0
- package/skills/mature-project-pattern-research/references/research-rubric.md +45 -0
- package/skills/minimax-docx/LICENSE +21 -0
- package/skills/minimax-docx/SKILL.md +273 -0
- package/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
- package/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
- package/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
- package/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
- package/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
- package/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
- package/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
- package/skills/minimax-docx/references/cjk_typography.md +357 -0
- package/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
- package/skills/minimax-docx/references/comments_guide.md +191 -0
- package/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
- package/skills/minimax-docx/references/design_principles.md +819 -0
- package/skills/minimax-docx/references/openxml_element_order.md +308 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
- package/skills/minimax-docx/references/openxml_namespaces.md +82 -0
- package/skills/minimax-docx/references/openxml_units.md +72 -0
- package/skills/minimax-docx/references/scenario_a_create.md +284 -0
- package/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
- package/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
- package/skills/minimax-docx/references/track_changes_guide.md +200 -0
- package/skills/minimax-docx/references/troubleshooting.md +506 -0
- package/skills/minimax-docx/references/typography_guide.md +294 -0
- package/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
- package/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
- package/skills/minimax-docx/scripts/docx_preview.sh +37 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
- package/skills/minimax-docx/scripts/env_check.sh +196 -0
- package/skills/minimax-docx/scripts/setup.ps1 +274 -0
- package/skills/minimax-docx/scripts/setup.sh +504 -0
- package/skills/minimax-pdf/README.md +222 -0
- package/skills/minimax-pdf/SKILL.md +218 -0
- package/skills/minimax-pdf/design/design.md +381 -0
- package/skills/minimax-pdf/scripts/cover.py +1579 -0
- package/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
- package/skills/minimax-pdf/scripts/fill_write.py +242 -0
- package/skills/minimax-pdf/scripts/make.sh +491 -0
- package/skills/minimax-pdf/scripts/merge.py +112 -0
- package/skills/minimax-pdf/scripts/palette.py +521 -0
- package/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
- package/skills/minimax-pdf/scripts/render_body.py +1052 -0
- package/skills/minimax-pdf/scripts/render_cover.js +111 -0
- package/skills/minimax-xlsx/SKILL.md +156 -0
- package/skills/minimax-xlsx/references/create.md +691 -0
- package/skills/minimax-xlsx/references/edit.md +684 -0
- package/skills/minimax-xlsx/references/fix.md +37 -0
- package/skills/minimax-xlsx/references/format.md +768 -0
- package/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
- package/skills/minimax-xlsx/references/read-analyze.md +97 -0
- package/skills/minimax-xlsx/references/validate.md +772 -0
- package/skills/minimax-xlsx/scripts/formula_check.py +422 -0
- package/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
- package/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
- package/skills/minimax-xlsx/scripts/style_audit.py +575 -0
- package/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
- package/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
- package/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
- package/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
- package/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
- package/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
- package/skills/newsletter-generation/SKILL.md +71 -0
- package/skills/oss-release-readiness/SKILL.md +47 -0
- package/skills/parallel-subagent-dispatch/SKILL.md +58 -0
- package/skills/performance-optimization/SKILL.md +364 -0
- package/skills/planning-and-task-breakdown/SKILL.md +290 -0
- package/skills/pptx-generator/SKILL.md +275 -0
- package/skills/pptx-generator/references/design-system.md +392 -0
- package/skills/pptx-generator/references/editing.md +162 -0
- package/skills/pptx-generator/references/pitfalls.md +112 -0
- package/skills/pptx-generator/references/pptxgenjs.md +420 -0
- package/skills/pptx-generator/references/slide-types.md +413 -0
- package/skills/pr-test-analysis/SKILL.md +24 -0
- package/skills/react-native-dev/SKILL.md +180 -0
- package/skills/react-native-dev/references/animations.md +254 -0
- package/skills/react-native-dev/references/components.md +124 -0
- package/skills/react-native-dev/references/engineering.md +527 -0
- package/skills/react-native-dev/references/forms.md +300 -0
- package/skills/react-native-dev/references/native-capabilities.md +163 -0
- package/skills/react-native-dev/references/navigation.md +271 -0
- package/skills/react-native-dev/references/networking.md +346 -0
- package/skills/react-native-dev/references/performance.md +215 -0
- package/skills/react-native-dev/references/state-management.md +230 -0
- package/skills/react-native-dev/references/styling.md +117 -0
- package/skills/react-native-dev/references/testing.md +341 -0
- package/skills/requirements-grilling/SKILL.md +447 -0
- package/skills/requirements-grilling/references/ADR-FORMAT.md +46 -0
- package/skills/requirements-grilling/references/CONTEXT-FORMAT.md +41 -0
- package/skills/requirements-grilling/references/INTERVIEW-PACKET-FORMAT.md +62 -0
- package/skills/requirements-grilling/references/MIT-LICENSE-MATT-POCOCK.md +25 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/interview-me/SKILL.upstream.md +225 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/LICENSE +21 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/NOTICE.md +12 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/batch-grill-me/SKILL.upstream.md +15 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grill-me/SKILL.upstream.md +7 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grilling/SKILL.upstream.md +12 -0
- package/skills/review-pipeline/SKILL.md +38 -0
- package/skills/rose-memory/SKILL.md +210 -0
- package/skills/rose-memory/references/README.md +48 -0
- package/skills/rose-memory/references/memory_cli.py +2384 -0
- package/skills/rose-memory/references/schema.sql +315 -0
- package/skills/security-and-hardening/SKILL.md +369 -0
- package/skills/session-handoff/SKILL.md +88 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/handoff/SKILL.upstream.md +16 -0
- package/skills/session-handoff/scripts/session_handoff.py +764 -0
- package/skills/shader-dev/SKILL.md +316 -0
- package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
- package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
- package/skills/shader-dev/reference/anti-aliasing.md +71 -0
- package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
- package/skills/shader-dev/reference/camera-effects.md +80 -0
- package/skills/shader-dev/reference/cellular-automata.md +635 -0
- package/skills/shader-dev/reference/color-palette.md +481 -0
- package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
- package/skills/shader-dev/reference/domain-repetition.md +436 -0
- package/skills/shader-dev/reference/domain-warping.md +419 -0
- package/skills/shader-dev/reference/fluid-simulation.md +425 -0
- package/skills/shader-dev/reference/fractal-rendering.md +525 -0
- package/skills/shader-dev/reference/lighting-model.md +639 -0
- package/skills/shader-dev/reference/matrix-transform.md +535 -0
- package/skills/shader-dev/reference/multipass-buffer.md +571 -0
- package/skills/shader-dev/reference/normal-estimation.md +418 -0
- package/skills/shader-dev/reference/particle-system.md +589 -0
- package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
- package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
- package/skills/shader-dev/reference/post-processing.md +375 -0
- package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
- package/skills/shader-dev/reference/procedural-noise.md +551 -0
- package/skills/shader-dev/reference/ray-marching.md +396 -0
- package/skills/shader-dev/reference/sdf-2d.md +724 -0
- package/skills/shader-dev/reference/sdf-3d.md +805 -0
- package/skills/shader-dev/reference/sdf-tricks.md +63 -0
- package/skills/shader-dev/reference/shadow-techniques.md +476 -0
- package/skills/shader-dev/reference/simulation-physics.md +644 -0
- package/skills/shader-dev/reference/sound-synthesis.md +578 -0
- package/skills/shader-dev/reference/terrain-rendering.md +839 -0
- package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
- package/skills/shader-dev/reference/texture-sampling.md +553 -0
- package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
- package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
- package/skills/shader-dev/reference/voxel-rendering.md +701 -0
- package/skills/shader-dev/reference/water-ocean.md +445 -0
- package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
- package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
- package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
- package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
- package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
- package/skills/shader-dev/techniques/camera-effects.md +115 -0
- package/skills/shader-dev/techniques/cellular-automata.md +531 -0
- package/skills/shader-dev/techniques/color-palette.md +380 -0
- package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
- package/skills/shader-dev/techniques/domain-repetition.md +333 -0
- package/skills/shader-dev/techniques/domain-warping.md +414 -0
- package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
- package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
- package/skills/shader-dev/techniques/lighting-model.md +527 -0
- package/skills/shader-dev/techniques/matrix-transform.md +455 -0
- package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
- package/skills/shader-dev/techniques/normal-estimation.md +318 -0
- package/skills/shader-dev/techniques/particle-system.md +1203 -0
- package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
- package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
- package/skills/shader-dev/techniques/post-processing.md +788 -0
- package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
- package/skills/shader-dev/techniques/procedural-noise.md +554 -0
- package/skills/shader-dev/techniques/ray-marching.md +467 -0
- package/skills/shader-dev/techniques/sdf-2d.md +631 -0
- package/skills/shader-dev/techniques/sdf-3d.md +589 -0
- package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
- package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
- package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
- package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
- package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
- package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
- package/skills/shader-dev/techniques/texture-sampling.md +382 -0
- package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
- package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
- package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
- package/skills/shader-dev/techniques/water-ocean.md +490 -0
- package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
- package/skills/shipping-and-launch/SKILL.md +334 -0
- package/skills/silent-failure-hunting/SKILL.md +24 -0
- package/skills/source-driven-development/SKILL.md +223 -0
- package/skills/spec-driven-development/SKILL.md +235 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/spec-driven-development/SKILL.upstream.md +206 -0
- package/skills/strategy-stress-test/SKILL.md +185 -0
- package/skills/systematic-literature-review/SKILL.md +77 -0
- package/skills/test-document-generator/SKILL.md +152 -0
- package/skills/test-document-generator/references/test-document-template.md +45 -0
- package/skills/test-driven-development/SKILL.md +399 -0
- package/skills/write-skills/GLOSSARY.md +113 -0
- package/skills/write-skills/SKILL.md +133 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/GLOSSARY.md +201 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/SKILL.upstream.md +83 -0
- package/src/runtime/child-guard.ts +70 -0
- package/src/runtime/conflicts.ts +25 -0
- package/src/runtime/contracts.ts +9 -0
- package/src/runtime/doctor.ts +134 -0
- package/src/runtime/global-resources.ts +152 -0
- package/src/runtime/index.ts +23 -0
- package/src/runtime/lifecycle.ts +19 -0
- package/src/runtime/native-integrations.ts +44 -0
- package/src/runtime/path-boundaries.ts +69 -0
- package/src/runtime/registry.ts +213 -0
- package/src/runtime/roles.ts +64 -0
- package/src/runtime/rose-context.ts +24 -0
- package/src/runtime/subagents.ts +426 -0
- package/templates/APPEND_SYSTEM.md +12 -0
- package/upstream/aili-workflows.lock.json +3226 -0
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import {
|
|
3
|
+
cp,
|
|
4
|
+
lstat,
|
|
5
|
+
mkdir,
|
|
6
|
+
readdir,
|
|
7
|
+
readFile,
|
|
8
|
+
rename,
|
|
9
|
+
rm,
|
|
10
|
+
writeFile,
|
|
11
|
+
} from "node:fs/promises";
|
|
12
|
+
import { basename, dirname, relative, resolve, sep } from "node:path";
|
|
13
|
+
import { execFileSync } from "node:child_process";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
|
|
16
|
+
const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
17
|
+
const SNAPSHOT = resolve(ROOT, "skills");
|
|
18
|
+
const LOCK = resolve(ROOT, "upstream/aili-workflows.lock.json");
|
|
19
|
+
const COMPATIBILITY = resolve(ROOT, "manifests/skill-compatibility.json");
|
|
20
|
+
const REPOSITORY = "https://github.com/Rosetears520/aili-workflows.git";
|
|
21
|
+
|
|
22
|
+
type FileRecord = { path: string; sha256: string; bytes: number };
|
|
23
|
+
type AnchorRecord = {
|
|
24
|
+
id: string;
|
|
25
|
+
disposition: string;
|
|
26
|
+
occurrences: Array<{ path: string; lines: number[] }>;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
interface LockFile {
|
|
30
|
+
schemaVersion: 1;
|
|
31
|
+
repository: string;
|
|
32
|
+
commit: string;
|
|
33
|
+
repositoryTree: string;
|
|
34
|
+
skillTree: string;
|
|
35
|
+
skillRoot: ".agents/skills";
|
|
36
|
+
skillCount: number;
|
|
37
|
+
fileCount: number;
|
|
38
|
+
contentHash: string;
|
|
39
|
+
synchronizedAt: string;
|
|
40
|
+
files: FileRecord[];
|
|
41
|
+
skills: Array<{ name: string; sourceHash: string; files: string[] }>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const anchorPatterns = [
|
|
45
|
+
{
|
|
46
|
+
id: "backend.opencode",
|
|
47
|
+
pattern: /\bopencode\b|\.opencode\/|~\/\.config\/opencode\//gi,
|
|
48
|
+
disposition: "retained as current adapter evidence; Pi must map the capability",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "tool.subagent",
|
|
52
|
+
pattern: /\bTask\b|task_id|subagent_type|subagent\.dispatch/gi,
|
|
53
|
+
disposition: "mapped through subagent.dispatch or blocked",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "tool.browser",
|
|
57
|
+
pattern: /playwright_|Playwright MCP|Chrome DevTools MCP|browser\.qa/gi,
|
|
58
|
+
disposition: "mapped through browser.qa or optional",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "tool.symbol-graph",
|
|
62
|
+
pattern: /\bCodeGraph\b|codegraph_|\bGraphify\b/gi,
|
|
63
|
+
disposition: "mapped through repository graph capabilities or optional",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "backend.openspec",
|
|
67
|
+
pattern: /\bOpenSpec\b|openspec\//gi,
|
|
68
|
+
disposition: "retained as an artifact backend contract; no completion authority",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "path.backend-home",
|
|
72
|
+
pattern: /~\/\.agents\/|~\/\.pi\/|\.config\/opencode/gi,
|
|
73
|
+
disposition: "must resolve through the active adapter or remain blocked",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "external.side-effect",
|
|
77
|
+
pattern: /\b(download|install|publish|release|upload|network|credential|secret)\b/gi,
|
|
78
|
+
disposition: "retained behind explicit capability and operation gates",
|
|
79
|
+
},
|
|
80
|
+
] as const;
|
|
81
|
+
|
|
82
|
+
function sha256(content: Buffer | string): string {
|
|
83
|
+
return createHash("sha256").update(content).digest("hex");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function posixPath(path: string): string {
|
|
87
|
+
return path.split(sep).join("/");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function git(source: string, args: string[]): string {
|
|
91
|
+
return execFileSync("git", ["-C", source, ...args], { encoding: "utf8" }).trim();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async function collectFiles(root: string): Promise<FileRecord[]> {
|
|
95
|
+
const records: FileRecord[] = [];
|
|
96
|
+
|
|
97
|
+
async function visit(directory: string): Promise<void> {
|
|
98
|
+
const entries = await readdir(directory, { withFileTypes: true });
|
|
99
|
+
entries.sort((left, right) => left.name.localeCompare(right.name));
|
|
100
|
+
for (const entry of entries) {
|
|
101
|
+
const absolute = resolve(directory, entry.name);
|
|
102
|
+
const metadata = await lstat(absolute);
|
|
103
|
+
if (metadata.isSymbolicLink()) {
|
|
104
|
+
throw new Error(`symbolic links are not allowed in the skill snapshot: ${absolute}`);
|
|
105
|
+
}
|
|
106
|
+
if (metadata.isDirectory()) {
|
|
107
|
+
await visit(absolute);
|
|
108
|
+
} else if (metadata.isFile()) {
|
|
109
|
+
const content = await readFile(absolute);
|
|
110
|
+
records.push({
|
|
111
|
+
path: posixPath(relative(root, absolute)),
|
|
112
|
+
sha256: sha256(content),
|
|
113
|
+
bytes: content.byteLength,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
await visit(root);
|
|
120
|
+
return records.sort((left, right) => left.path.localeCompare(right.path));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function aggregateHash(files: FileRecord[]): string {
|
|
124
|
+
return sha256(files.map((file) => `${file.path}\0${file.sha256}\0${file.bytes}\n`).join(""));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function skillHash(files: FileRecord[]): string {
|
|
128
|
+
return aggregateHash(files);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function parseDescription(markdown: string): string {
|
|
132
|
+
const match = markdown.match(/^---\s*\n[\s\S]*?^description:\s*(.+)$/m);
|
|
133
|
+
return match?.[1]?.trim() ?? "Unverified: frontmatter description was not parsed";
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function stopOutcomes(markdown: string): string[] {
|
|
137
|
+
return ["complete", "need-user", "need-evidence", "material-delta", "blocked", "Unverified"]
|
|
138
|
+
.filter((outcome) => markdown.includes(outcome));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function textContent(content: Buffer): string | undefined {
|
|
142
|
+
if (content.includes(0)) return undefined;
|
|
143
|
+
try {
|
|
144
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(content);
|
|
145
|
+
} catch {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async function anchorInventory(skillRoot: string, files: FileRecord[]): Promise<AnchorRecord[]> {
|
|
151
|
+
const anchors: AnchorRecord[] = [];
|
|
152
|
+
for (const anchor of anchorPatterns) {
|
|
153
|
+
const occurrences: Array<{ path: string; lines: number[] }> = [];
|
|
154
|
+
for (const file of files) {
|
|
155
|
+
const content = textContent(await readFile(resolve(skillRoot, file.path)));
|
|
156
|
+
if (content === undefined) continue;
|
|
157
|
+
const lines = content.split(/\r?\n/);
|
|
158
|
+
const matchingLines = lines
|
|
159
|
+
.map((line, index) => {
|
|
160
|
+
anchor.pattern.lastIndex = 0;
|
|
161
|
+
return anchor.pattern.test(line) ? index + 1 : undefined;
|
|
162
|
+
})
|
|
163
|
+
.filter((line): line is number => line !== undefined);
|
|
164
|
+
if (matchingLines.length > 0) occurrences.push({ path: file.path, lines: matchingLines });
|
|
165
|
+
}
|
|
166
|
+
if (occurrences.length > 0) {
|
|
167
|
+
anchors.push({ id: anchor.id, disposition: anchor.disposition, occurrences });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return anchors;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function parseArgs(): { verify: boolean; source?: string; revision?: string } {
|
|
174
|
+
const args = process.argv.slice(2);
|
|
175
|
+
if (args.length === 1 && args[0] === "--verify") return { verify: true };
|
|
176
|
+
const sourceIndex = args.indexOf("--source");
|
|
177
|
+
const revisionIndex = args.indexOf("--revision");
|
|
178
|
+
if (sourceIndex < 0 || revisionIndex < 0 || !args[sourceIndex + 1] || !args[revisionIndex + 1]) {
|
|
179
|
+
throw new Error("usage: sync-skills.ts --source <aili-workflows-root> --revision <40-char-sha> | --verify");
|
|
180
|
+
}
|
|
181
|
+
return { verify: false, source: resolve(args[sourceIndex + 1]), revision: args[revisionIndex + 1] };
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
async function verifySnapshot(): Promise<void> {
|
|
185
|
+
const lock = JSON.parse(await readFile(LOCK, "utf8")) as LockFile;
|
|
186
|
+
const compatibility = JSON.parse(await readFile(COMPATIBILITY, "utf8")) as {
|
|
187
|
+
source: { commit: string; contentHash: string };
|
|
188
|
+
records: Array<Record<string, unknown> & { name: string; sourceHash: string }>;
|
|
189
|
+
};
|
|
190
|
+
const files = await collectFiles(SNAPSHOT);
|
|
191
|
+
const actualHash = aggregateHash(files);
|
|
192
|
+
const expectedFiles = JSON.stringify(lock.files);
|
|
193
|
+
const actualFiles = JSON.stringify(files);
|
|
194
|
+
if (actualFiles !== expectedFiles || actualHash !== lock.contentHash) {
|
|
195
|
+
throw new Error("generated skill snapshot drifted from upstream/aili-workflows.lock.json");
|
|
196
|
+
}
|
|
197
|
+
if (compatibility.source.commit !== lock.commit || compatibility.source.contentHash !== lock.contentHash) {
|
|
198
|
+
throw new Error("skill compatibility source does not match the lock");
|
|
199
|
+
}
|
|
200
|
+
const expectedSkills = new Map(lock.skills.map((skill) => [skill.name, skill.sourceHash]));
|
|
201
|
+
const seen = new Set<string>();
|
|
202
|
+
for (const record of compatibility.records) {
|
|
203
|
+
if (seen.has(record.name)) throw new Error(`duplicate compatibility record: ${record.name}`);
|
|
204
|
+
seen.add(record.name);
|
|
205
|
+
if (expectedSkills.get(record.name) !== record.sourceHash) {
|
|
206
|
+
throw new Error(`compatibility source hash mismatch: ${record.name}`);
|
|
207
|
+
}
|
|
208
|
+
for (const field of [
|
|
209
|
+
"sourcePath",
|
|
210
|
+
"requiredCapabilities",
|
|
211
|
+
"backendAnchors",
|
|
212
|
+
"adapterOwner",
|
|
213
|
+
"verification",
|
|
214
|
+
"status",
|
|
215
|
+
"reason",
|
|
216
|
+
"unverified",
|
|
217
|
+
]) {
|
|
218
|
+
if (!(field in record)) throw new Error(`missing compatibility field ${field}: ${record.name}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const missing = [...expectedSkills.keys()].filter((name) => !seen.has(name));
|
|
222
|
+
const unknown = [...seen].filter((name) => !expectedSkills.has(name));
|
|
223
|
+
if (missing.length || unknown.length) {
|
|
224
|
+
throw new Error(`compatibility coverage mismatch; missing=${missing.join(",")} unknown=${unknown.join(",")}`);
|
|
225
|
+
}
|
|
226
|
+
console.log(`PASS: ${lock.skillCount} skills and ${lock.fileCount} files match ${lock.commit}`);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
async function synchronize(source: string, revision: string): Promise<void> {
|
|
230
|
+
if (!/^[0-9a-f]{40}$/.test(revision)) throw new Error("revision must be a lowercase 40-character SHA");
|
|
231
|
+
const head = git(source, ["rev-parse", "HEAD"]);
|
|
232
|
+
const status = git(source, ["status", "--porcelain", "--untracked-files=all"]);
|
|
233
|
+
const repositoryTree = git(source, ["rev-parse", "HEAD^{tree}"]);
|
|
234
|
+
const skillTree = git(source, ["rev-parse", "HEAD:.agents/skills"]);
|
|
235
|
+
const synchronizedAt = git(source, ["show", "-s", "--format=%cI", "HEAD"]);
|
|
236
|
+
const origin = git(source, ["remote", "get-url", "origin"]);
|
|
237
|
+
if (head !== revision) throw new Error(`source HEAD ${head} does not match ${revision}`);
|
|
238
|
+
if (status) throw new Error("source repository is dirty; synchronization refused");
|
|
239
|
+
if (origin.replace(/\.git$/, "") !== REPOSITORY.replace(/\.git$/, "")) {
|
|
240
|
+
throw new Error(`unexpected source origin: ${origin}`);
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
await lstat(SNAPSHOT);
|
|
244
|
+
throw new Error("skills/ already exists; verify it and use a separately approved replacement operation");
|
|
245
|
+
} catch (error) {
|
|
246
|
+
if (error instanceof Error && !error.message.includes("ENOENT")) throw error;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const sourceSkillRoot = resolve(source, ".agents/skills");
|
|
250
|
+
const upstreamCapabilities = JSON.parse(
|
|
251
|
+
await readFile(resolve(source, "manifests/skill-capabilities.json"), "utf8"),
|
|
252
|
+
) as {
|
|
253
|
+
profiles: Record<string, { requiredCapabilities: string[]; optionalCapabilities: string[] }>;
|
|
254
|
+
assignments: Array<{ profile: string; skills: string[] }>;
|
|
255
|
+
};
|
|
256
|
+
const profileBySkill = new Map<string, string>();
|
|
257
|
+
for (const assignment of upstreamCapabilities.assignments) {
|
|
258
|
+
for (const skill of assignment.skills) {
|
|
259
|
+
if (profileBySkill.has(skill)) throw new Error(`duplicate upstream capability assignment: ${skill}`);
|
|
260
|
+
profileBySkill.set(skill, assignment.profile);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const files = await collectFiles(sourceSkillRoot);
|
|
265
|
+
const skillNames = (await readdir(sourceSkillRoot, { withFileTypes: true }))
|
|
266
|
+
.filter((entry) => entry.isDirectory())
|
|
267
|
+
.map((entry) => entry.name)
|
|
268
|
+
.sort((left, right) => left.localeCompare(right));
|
|
269
|
+
if (skillNames.length !== profileBySkill.size || skillNames.some((name) => !profileBySkill.has(name))) {
|
|
270
|
+
throw new Error("upstream skill directories and capability assignments are not bijective");
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
const skills: LockFile["skills"] = [];
|
|
274
|
+
const records = [];
|
|
275
|
+
for (const name of skillNames) {
|
|
276
|
+
const skillFiles = files
|
|
277
|
+
.filter((file) => file.path === name || file.path.startsWith(`${name}/`))
|
|
278
|
+
.map((file) => ({ ...file, path: file.path.slice(name.length + 1) }));
|
|
279
|
+
const sourceHash = skillHash(skillFiles);
|
|
280
|
+
const profileName = profileBySkill.get(name)!;
|
|
281
|
+
const profile = upstreamCapabilities.profiles[profileName];
|
|
282
|
+
if (!profile) throw new Error(`missing upstream capability profile: ${profileName}`);
|
|
283
|
+
const markdown = await readFile(resolve(sourceSkillRoot, name, "SKILL.md"), "utf8");
|
|
284
|
+
const anchors = await anchorInventory(resolve(sourceSkillRoot, name), skillFiles);
|
|
285
|
+
const optional = ["web-research", "browser-qa", "memory", "artifact-runtime"].includes(profileName);
|
|
286
|
+
skills.push({ name, sourceHash, files: skillFiles.map((file) => file.path) });
|
|
287
|
+
records.push({
|
|
288
|
+
name,
|
|
289
|
+
sourcePath: `.agents/skills/${name}`,
|
|
290
|
+
sourceHash,
|
|
291
|
+
files: skillFiles,
|
|
292
|
+
triggers: {
|
|
293
|
+
description: parseDescription(markdown),
|
|
294
|
+
nearMissDeclared: /do not|don't|near miss|仅当|不要|不负责/i.test(markdown),
|
|
295
|
+
stopOutcomes: stopOutcomes(markdown),
|
|
296
|
+
},
|
|
297
|
+
backendAnchors: anchors,
|
|
298
|
+
requiredCapabilities: profile.requiredCapabilities,
|
|
299
|
+
optionalCapabilities: profile.optionalCapabilities,
|
|
300
|
+
canonicalChange: "none in aili-pi; consume the pinned upstream body without semantic transformation",
|
|
301
|
+
adapterOwner: optional ? `optional-pack:${profileName}` : `planned:aili-pi:${profileName}`,
|
|
302
|
+
verification: ["snapshot-hash:verified", "pi-discovery:pending", "pi-behavior:pending"],
|
|
303
|
+
status: optional ? "optional" : "blocked",
|
|
304
|
+
reason: optional
|
|
305
|
+
? `The ${profileName} capability is not bundled until its optional provider is verified.`
|
|
306
|
+
: `The required ${profileName} Pi adapter has not yet passed behavior verification.`,
|
|
307
|
+
unverified: ["Pi discovery and behavior evidence are pending later BUILD packages."],
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const lock: LockFile = {
|
|
312
|
+
schemaVersion: 1,
|
|
313
|
+
repository: REPOSITORY,
|
|
314
|
+
commit: revision,
|
|
315
|
+
repositoryTree,
|
|
316
|
+
skillTree,
|
|
317
|
+
skillRoot: ".agents/skills",
|
|
318
|
+
skillCount: skillNames.length,
|
|
319
|
+
fileCount: files.length,
|
|
320
|
+
contentHash: aggregateHash(files),
|
|
321
|
+
synchronizedAt,
|
|
322
|
+
files,
|
|
323
|
+
skills,
|
|
324
|
+
};
|
|
325
|
+
const compatibility = {
|
|
326
|
+
schemaVersion: 1,
|
|
327
|
+
source: {
|
|
328
|
+
repository: REPOSITORY,
|
|
329
|
+
commit: revision,
|
|
330
|
+
tree: skillTree,
|
|
331
|
+
contentHash: lock.contentHash,
|
|
332
|
+
},
|
|
333
|
+
allowedStatuses: ["native", "adapted", "optional", "blocked"],
|
|
334
|
+
records,
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const stage = resolve(ROOT, `.tmp/sync-skills-${process.pid}`);
|
|
338
|
+
await rm(stage, { recursive: true, force: true });
|
|
339
|
+
await mkdir(dirname(stage), { recursive: true });
|
|
340
|
+
await cp(sourceSkillRoot, stage, { recursive: true, preserveTimestamps: false });
|
|
341
|
+
await mkdir(dirname(LOCK), { recursive: true });
|
|
342
|
+
await mkdir(dirname(COMPATIBILITY), { recursive: true });
|
|
343
|
+
await writeFile(`${LOCK}.tmp`, `${JSON.stringify(lock, null, 2)}\n`, { flag: "wx" });
|
|
344
|
+
await writeFile(`${COMPATIBILITY}.tmp`, `${JSON.stringify(compatibility, null, 2)}\n`, { flag: "wx" });
|
|
345
|
+
await rename(stage, SNAPSHOT);
|
|
346
|
+
await rename(`${LOCK}.tmp`, LOCK);
|
|
347
|
+
await rename(`${COMPATIBILITY}.tmp`, COMPATIBILITY);
|
|
348
|
+
await verifySnapshot();
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
const args = parseArgs();
|
|
352
|
+
if (args.verify) {
|
|
353
|
+
await verifySnapshot();
|
|
354
|
+
} else {
|
|
355
|
+
await synchronize(args.source!, args.revision!);
|
|
356
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { validateRegistry, validateStableRelease } from "../src/runtime/registry.ts";
|
|
2
|
+
|
|
3
|
+
const release = process.argv.includes("--release");
|
|
4
|
+
const errors = release ? await validateStableRelease() : await validateRegistry();
|
|
5
|
+
if (errors.length > 0) {
|
|
6
|
+
console.error(`${release ? "stable release" : "registry"} validation failed (${errors.length})`);
|
|
7
|
+
for (const error of errors) console.error(`- ${error}`);
|
|
8
|
+
process.exitCode = 1;
|
|
9
|
+
} else {
|
|
10
|
+
console.log(`${release ? "stable release" : "registry"} validation passed`);
|
|
11
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: academic-paper-review
|
|
3
|
+
description: Review a single academic paper, preprint, DOI, arXiv link, or user-provided PDF/text with source-grounded critique. Use for paper summaries, methodology review, novelty checks, reproducibility concerns, or "review this paper" requests; do not use for multi-paper surveys, systematic literature reviews, citation management, or implementation from a paper.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Academic Paper Review
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Produce a careful, evidence-grounded review of one academic work. The output should help the user understand what the paper claims, how it supports those claims, what is novel, what is weak, and how much confidence to place in the result.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
Use for:
|
|
15
|
+
|
|
16
|
+
- reviewing one paper, preprint, DOI, arXiv page, conference paper, thesis chapter, or pasted paper text
|
|
17
|
+
- summarizing contributions, methods, experiments, evidence, and limitations
|
|
18
|
+
- assessing reproducibility, statistical strength, baselines, assumptions, or threat-to-validity gaps
|
|
19
|
+
- comparing the paper's stated claims with its methods and results
|
|
20
|
+
|
|
21
|
+
Do not use for:
|
|
22
|
+
|
|
23
|
+
- multi-paper surveys or systematic reviews; use `systematic-literature-review`
|
|
24
|
+
- implementing algorithms from the paper; use the relevant engineering workflow after review
|
|
25
|
+
- proofreading or rewriting the paper as the author
|
|
26
|
+
- deciding clinical, legal, financial, or safety-critical action from one paper
|
|
27
|
+
|
|
28
|
+
## Review Workflow
|
|
29
|
+
|
|
30
|
+
1. Identify bibliographic facts: title, authors, venue/preprint server, date/version, DOI/arXiv ID/URL, and supplied source path if local.
|
|
31
|
+
2. State the user's review question and intended use: comprehension, critique, literature fit, reproduction, implementation planning, or decision support.
|
|
32
|
+
3. Extract claims in your own words: main contribution, assumptions, evidence type, and stated limitations.
|
|
33
|
+
4. Evaluate methodology: data/source material, controls, baselines, metrics, statistical treatment, ablations, and whether conclusions match evidence.
|
|
34
|
+
5. Evaluate novelty and related work only from cited sources or explicitly gathered evidence; mark unsupported novelty claims `[UNVERIFIED]`.
|
|
35
|
+
6. Check reproducibility: code/data availability, parameter details, environment, prompts/protocols, licensing, and missing implementation details.
|
|
36
|
+
7. Separate observations from critique. Do not overstate certainty when only the abstract, a partial PDF, or secondary summaries were available.
|
|
37
|
+
8. Return synthesis over listing: explain what the paper means for the user's goal, not just section-by-section notes.
|
|
38
|
+
|
|
39
|
+
## Data Authenticity Rules
|
|
40
|
+
|
|
41
|
+
- Every factual claim about the paper should cite a page, section, figure/table, DOI/arXiv URL, or supplied excerpt anchor when available.
|
|
42
|
+
- Do not invent citations, datasets, metrics, numerical results, author intent, peer-review status, or publication venue.
|
|
43
|
+
- If a table/figure is unreadable or unavailable, say so and mark the affected conclusion `[UNVERIFIED]`.
|
|
44
|
+
- Treat generated summaries, OCR, browser text, and secondary articles as untrusted evidence until checked against the paper.
|
|
45
|
+
|
|
46
|
+
## Output Contract
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
STATUS: REVIEWED | PARTIAL | BLOCKED
|
|
50
|
+
CONFIDENCE: high | medium | low
|
|
51
|
+
|
|
52
|
+
PAPER:
|
|
53
|
+
- Title:
|
|
54
|
+
- Authors:
|
|
55
|
+
- Source / version:
|
|
56
|
+
|
|
57
|
+
USER QUESTION:
|
|
58
|
+
- <why the user wants this review>
|
|
59
|
+
|
|
60
|
+
CORE CLAIMS:
|
|
61
|
+
- <claim> - Evidence: <page/section/figure/source or [UNVERIFIED]>
|
|
62
|
+
|
|
63
|
+
METHOD / EVIDENCE:
|
|
64
|
+
- <method summary and strength>
|
|
65
|
+
|
|
66
|
+
CRITIQUE:
|
|
67
|
+
- Strengths:
|
|
68
|
+
- Limitations:
|
|
69
|
+
- Reproducibility:
|
|
70
|
+
- Novelty / related work:
|
|
71
|
+
|
|
72
|
+
TAKEAWAY:
|
|
73
|
+
- <synthesized implication for the user's goal>
|
|
74
|
+
|
|
75
|
+
UNVERIFIED:
|
|
76
|
+
- <missing source, inaccessible page, weak citation, or N/A>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Provenance
|
|
80
|
+
|
|
81
|
+
Clean-room AILI/OpenCode adaptation inspired by the public DeerFlow `academic-paper-review` skill pattern. No upstream skill text, tool names, runtime paths, generated assets, or provider assumptions are copied. Source family: [bytedance/deer-flow](https://github.com/bytedance/deer-flow), MIT License.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents-md-initialization
|
|
3
|
+
description: Create, update, or validate a project-local AGENTS.md from the shared AILI template when initializing or checking repository agent rules.
|
|
4
|
+
metadata:
|
|
5
|
+
tool: references/agents_md.py
|
|
6
|
+
template: references/agents-template.md
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# AGENTS.md Initialization
|
|
10
|
+
|
|
11
|
+
## Non-Negotiable Rule
|
|
12
|
+
|
|
13
|
+
Project `AGENTS.md` must be created from the bundled AILI AGENTS template.
|
|
14
|
+
|
|
15
|
+
Do not write a project `AGENTS.md` from scratch.
|
|
16
|
+
|
|
17
|
+
Use the bundled script through the active adapter's resolved Skill root:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python <skill-root>/references/agents_md.py init --project .
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The script and template are distributed with this skill:
|
|
24
|
+
|
|
25
|
+
- `references/agents_md.py`
|
|
26
|
+
- `references/agents-template.md`
|
|
27
|
+
|
|
28
|
+
If this skill is being run from a repository checkout rather than an installed adapter-managed Skill, use the repository-local path:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python .agents/skills/agents-md-initialization/references/agents_md.py init --project .
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Commands
|
|
35
|
+
|
|
36
|
+
Initialize a project-local `AGENTS.md`:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
python <skill-root>/references/agents_md.py init --project .
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Update an existing generated project `AGENTS.md` against the current template-managed content:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
python <skill-root>/references/agents_md.py update --project .
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Check template compliance:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python <skill-root>/references/agents_md.py check --project .
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If the adapter-resolved Skill root is unavailable but the current repository contains this skill, replace the path prefix with `.agents/skills/agents-md-initialization/`.
|
|
55
|
+
|
|
56
|
+
## Workflow
|
|
57
|
+
|
|
58
|
+
1. Run `init` when the target project has no `AGENTS.md`.
|
|
59
|
+
2. If `AGENTS.md` already exists, do not overwrite it silently. Use `update` for template-managed compatibility updates, or ask before using `init --strategy backup-overwrite`.
|
|
60
|
+
|
|
61
|
+
🛑 **STOP before overwrite or backup-overwrite:** show the existing path, state that project-local content may be replaced outside managed blocks, and wait for explicit human approval.
|
|
62
|
+
|
|
63
|
+
3. Inspect the repository and fill only project-specific sections:
|
|
64
|
+
- `Project Overview`
|
|
65
|
+
- `Setup Commands`
|
|
66
|
+
- `Architecture and Project Structure`
|
|
67
|
+
- `Project-Specific Rules`
|
|
68
|
+
- `Project-Specific Testing and Artifact Placement`
|
|
69
|
+
- `Local Overrides`
|
|
70
|
+
4. Do not copy broad global workflow/safety rules into the project file unless the project intentionally strengthens or specializes them.
|
|
71
|
+
5. Check CodeGraph readiness only for the exact current repository root after confirming it:
|
|
72
|
+
- run or request `codegraph status` for the target project
|
|
73
|
+
- if CodeGraph is not initialized, ask whether to run `codegraph init -i` for that exact one root; approval is per-root and is not inferred from broad or neighboring-root approval
|
|
74
|
+
- if approved, run `codegraph init -i` and then `codegraph status`
|
|
75
|
+
- if CodeGraph is unavailable, skipped, or not approved, report it as a non-blocking follow-up
|
|
76
|
+
- refuse batch/multi-repository initialization even under broad approval, and do not run `openspec init` as part of this flow
|
|
77
|
+
- treat CodeGraph as optional discovery only; stale/noisy/unavailable results fall back to ordinary search/read, every final file must still be read, and CodeGraph has no lifecycle/completion authority
|
|
78
|
+
6. Run `check` before completion.
|
|
79
|
+
|
|
80
|
+
## Fallbacks and Stop Conditions
|
|
81
|
+
|
|
82
|
+
| Trigger condition | First response | If still unresolved |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| `references/agents-template.md` is missing or unreadable | Stop and report the expected bundled template path; do not hand-write `AGENTS.md` | Ask the user to restore/reinstall the skill or provide an approved template source |
|
|
85
|
+
| `references/agents_md.py` is missing or not executable by Python | Stop and report the expected bundled script path and command attempted | Ask the user to restore/reinstall the skill; do not create a replacement script in the target project |
|
|
86
|
+
| Installed skill path is unavailable but a repository checkout is present | Use `.agents/skills/agents-md-initialization/references/agents_md.py` from the checkout | If neither installed nor repo-local bundled script exists, stop and ask for the AILI workflow checkout path |
|
|
87
|
+
| Existing `AGENTS.md` has unrecognized local content outside managed blocks | Prefer `update`; summarize preserved local sections before editing | Require explicit approval before any backup-overwrite strategy |
|
|
88
|
+
| CodeGraph is not installed, unavailable, or user declines initialization | Report CodeGraph as skipped/unavailable/not approved | Do not block `AGENTS.md` completion; do not claim code-map coverage |
|
|
89
|
+
| `check` fails after init/update | Report the failing output and inspect only the relevant sections | Do not claim completion until `check` passes or the failure is marked unresolved |
|
|
90
|
+
|
|
91
|
+
## CI / Pre-Commit Gate
|
|
92
|
+
|
|
93
|
+
Target projects should add a lightweight check when practical:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
python <skill-root>/references/agents_md.py check --project .
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
For `Makefile` projects:
|
|
100
|
+
|
|
101
|
+
```makefile
|
|
102
|
+
check-agents:
|
|
103
|
+
python "<skill-root>/references/agents_md.py" check --project .
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
For pre-commit hooks:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
#!/usr/bin/env bash
|
|
110
|
+
python "<skill-root>/references/agents_md.py" check --project .
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Verification
|
|
114
|
+
|
|
115
|
+
Report:
|
|
116
|
+
|
|
117
|
+
- whether `init`, `update`, or `check` was used
|
|
118
|
+
- whether an existing `AGENTS.md` was backed up
|
|
119
|
+
- which project-specific sections were filled
|
|
120
|
+
- CodeGraph status: initialized / initialized this run / skipped / unavailable / not approved
|
|
121
|
+
- the final `check` result
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<!-- AILI_AGENTS_TEMPLATE_VERSION: 2 -->
|
|
2
|
+
<!-- AILI_AGENTS_TEMPLATE_SOURCE: templates/AGENTS.md -->
|
|
3
|
+
<!-- AILI_AGENTS_TEMPLATE_MODE: generated-project-local-file -->
|
|
4
|
+
|
|
5
|
+
# AGENTS.md
|
|
6
|
+
|
|
7
|
+
This file is the project-level instruction contract for AI coding agents working in this repository.
|
|
8
|
+
|
|
9
|
+
It contains project facts, local commands, local artifact placement, and repository-specific exceptions. Reusable workflow and safety invariants are installed globally by `rose-aili` from `templates/opencode-global-AGENTS.md`.
|
|
10
|
+
|
|
11
|
+
Do not copy broad global operating rules into this file unless this project intentionally overrides or strengthens them.
|
|
12
|
+
|
|
13
|
+
## Project Overview
|
|
14
|
+
|
|
15
|
+
<!-- Fill this section during initialization. Use facts from repository files only. Do not invent missing details. -->
|
|
16
|
+
|
|
17
|
+
- Project purpose: TODO
|
|
18
|
+
- Primary language/runtime: TODO
|
|
19
|
+
- Package manager: TODO
|
|
20
|
+
- Main application entry points: TODO
|
|
21
|
+
- Main test framework: TODO
|
|
22
|
+
- Important directories: TODO
|
|
23
|
+
- Generated/build output directories: TODO
|
|
24
|
+
- Deployment/runtime environment: TODO
|
|
25
|
+
|
|
26
|
+
## Setup Commands
|
|
27
|
+
|
|
28
|
+
<!-- Fill with verified commands from package manifests, README, docs, Makefile, CI, or equivalent project files. Use "unknown" only when the repository does not provide enough evidence. -->
|
|
29
|
+
|
|
30
|
+
- Install dependencies: TODO
|
|
31
|
+
- Start development server: TODO
|
|
32
|
+
- Build: TODO
|
|
33
|
+
- Lint: TODO
|
|
34
|
+
- Typecheck: TODO
|
|
35
|
+
- Test all: TODO
|
|
36
|
+
- Test focused: TODO
|
|
37
|
+
- Format: TODO
|
|
38
|
+
- Clean: TODO
|
|
39
|
+
|
|
40
|
+
## Architecture and Project Structure
|
|
41
|
+
|
|
42
|
+
<!-- Summarize only facts discovered from repository files. Do not invent architecture. -->
|
|
43
|
+
|
|
44
|
+
- `src/`: TODO
|
|
45
|
+
- `tests/`: TODO
|
|
46
|
+
- `docs/`: TODO
|
|
47
|
+
- `scripts/`: TODO
|
|
48
|
+
- Configuration files: TODO
|
|
49
|
+
- CI/CD files: TODO
|
|
50
|
+
- Generated files: TODO
|
|
51
|
+
- External integrations: TODO
|
|
52
|
+
|
|
53
|
+
## Project-Specific Rules
|
|
54
|
+
|
|
55
|
+
<!-- Add rules that are specific to this repository. Do not add personal preferences, temporary task notes, or generic advice. -->
|
|
56
|
+
|
|
57
|
+
- TODO
|
|
58
|
+
|
|
59
|
+
## Project-Specific Testing and Artifact Placement
|
|
60
|
+
|
|
61
|
+
<!-- Record repository-specific test locations and artifact placement decisions. Keep global verification discipline in the global AGENTS file. -->
|
|
62
|
+
|
|
63
|
+
- Unit tests: TODO
|
|
64
|
+
- Integration tests: TODO
|
|
65
|
+
- CLI tests: TODO
|
|
66
|
+
- API / contract tests: TODO
|
|
67
|
+
- GUI / browser / Playwright tests: TODO
|
|
68
|
+
- Test fixtures: TODO
|
|
69
|
+
- Snapshots / golden files: TODO
|
|
70
|
+
- Test reports / traces / screenshots: TODO
|
|
71
|
+
- Temporary test output: TODO
|
|
72
|
+
|
|
73
|
+
Rules:
|
|
74
|
+
|
|
75
|
+
- Do not place new test files in the repository root unless this section explicitly allows it.
|
|
76
|
+
- Unless the user explicitly requests an external or temporary-only artifact, user-visible test files, test plans, reports, traces, screenshots, generated fixtures, golden files, and verification artifacts must be written inside the repository at a project-defined path or after a placement decision.
|
|
77
|
+
- If a new test category is introduced, ask the user for its repository-local location once, then record the chosen convention here.
|
|
78
|
+
|
|
79
|
+
## Local Overrides
|
|
80
|
+
|
|
81
|
+
<!-- Optional. Add local overrides only when this repository needs to strengthen or specialize the global AGENTS rules. Do not weaken global safety, evidence, git, security, or completion rules. -->
|
|
82
|
+
|
|
83
|
+
- None documented.
|