@proflandrigan/shards 1.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/README.md +475 -0
- package/package.json +37 -0
- package/src/agents/academic.md +276 -0
- package/src/agents/ai-engineer.md +377 -0
- package/src/agents/analytics-engineer.md +364 -0
- package/src/agents/applied-ml-scientist.md +410 -0
- package/src/agents/backend-engineer.md +255 -0
- package/src/agents/bi-engineer.md +333 -0
- package/src/agents/data-analyst.md +343 -0
- package/src/agents/data-engineer.md +260 -0
- package/src/agents/data-modeller.md +386 -0
- package/src/agents/data-scientist.md +366 -0
- package/src/agents/deep-learning-engineer.md +389 -0
- package/src/agents/ml-engineer.md +424 -0
- package/src/agents/mlops-engineer.md +339 -0
- package/src/agents/researcher.md +187 -0
- package/src/agents/specific_instructions/academic/critical_review.md +263 -0
- package/src/agents/specific_instructions/academic/report.md +113 -0
- package/src/agents/specific_instructions/ai_engineer/advise.md +162 -0
- package/src/agents/specific_instructions/ai_engineer/bi_engineer_handoff.md +86 -0
- package/src/agents/specific_instructions/ai_engineer/experiment.md +471 -0
- package/src/agents/specific_instructions/ai_engineer/experiment_ui_mode.md +44 -0
- package/src/agents/specific_instructions/ai_engineer/phases/index.md +45 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-1.md +55 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-2.md +86 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-3.md +96 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-4.md +138 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-5.md +157 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-6.md +196 -0
- package/src/agents/specific_instructions/ai_engineer/phases/phase-7.md +313 -0
- package/src/agents/specific_instructions/ai_engineer/phases.md +1011 -0
- package/src/agents/specific_instructions/ai_engineer/prompt_lab.md +161 -0
- package/src/agents/specific_instructions/ai_engineer/prompt_lab_ui_mode.md +28 -0
- package/src/agents/specific_instructions/ai_engineer/research.md +393 -0
- package/src/agents/specific_instructions/ai_engineer/research_ui_mode.md +66 -0
- package/src/agents/specific_instructions/ai_engineer/review.md +159 -0
- package/src/agents/specific_instructions/ai_engineer/validation_checklist.md +182 -0
- package/src/agents/specific_instructions/analytics_engineer/advise.md +155 -0
- package/src/agents/specific_instructions/analytics_engineer/bi_engineer_handoff.md +91 -0
- package/src/agents/specific_instructions/analytics_engineer/data_analyst_handoff.md +84 -0
- package/src/agents/specific_instructions/analytics_engineer/deep_phases.md +818 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/index.md +24 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-1.md +77 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-2.md +106 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-3.md +93 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-4.md +79 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-5.md +61 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-6.md +45 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-7.md +235 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-8.md +221 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_quick/index.md +19 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_quick/phase-1.md +47 -0
- package/src/agents/specific_instructions/analytics_engineer/phases_quick/phase-2.md +78 -0
- package/src/agents/specific_instructions/analytics_engineer/quick_phases.md +112 -0
- package/src/agents/specific_instructions/analytics_engineer/review.md +167 -0
- package/src/agents/specific_instructions/analytics_engineer/service_mode.md +369 -0
- package/src/agents/specific_instructions/analytics_engineer/ui_mode.md +45 -0
- package/src/agents/specific_instructions/analytics_engineer/update.md +162 -0
- package/src/agents/specific_instructions/analytics_engineer/validation_checklist.md +121 -0
- package/src/agents/specific_instructions/applied_ml_scientist/advise.md +143 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/index.md +21 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-1.md +51 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-2.md +66 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-3.md +113 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-4.md +104 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-5.md +156 -0
- package/src/agents/specific_instructions/applied_ml_scientist/phases.md +428 -0
- package/src/agents/specific_instructions/applied_ml_scientist/research.md +379 -0
- package/src/agents/specific_instructions/applied_ml_scientist/review.md +142 -0
- package/src/agents/specific_instructions/applied_ml_scientist/validation_checklist.md +136 -0
- package/src/agents/specific_instructions/backend_engineer/clean.md +149 -0
- package/src/agents/specific_instructions/backend_engineer/review.md +91 -0
- package/src/agents/specific_instructions/backend_engineer/review_checklist.md +54 -0
- package/src/agents/specific_instructions/backend_engineer/service_mode.md +67 -0
- package/src/agents/specific_instructions/bi_engineer/advise.md +137 -0
- package/src/agents/specific_instructions/bi_engineer/data_analyst_handoff.md +77 -0
- package/src/agents/specific_instructions/bi_engineer/incoming_handoff.md +45 -0
- package/src/agents/specific_instructions/bi_engineer/phases/index.md +20 -0
- package/src/agents/specific_instructions/bi_engineer/phases/phase-1.md +164 -0
- package/src/agents/specific_instructions/bi_engineer/phases/phase-2.md +92 -0
- package/src/agents/specific_instructions/bi_engineer/phases/phase-3.md +121 -0
- package/src/agents/specific_instructions/bi_engineer/phases/phase-4.md +106 -0
- package/src/agents/specific_instructions/bi_engineer/phases.md +451 -0
- package/src/agents/specific_instructions/bi_engineer/review.md +166 -0
- package/src/agents/specific_instructions/bi_engineer/update.md +147 -0
- package/src/agents/specific_instructions/bi_engineer/validation_checklist.md +124 -0
- package/src/agents/specific_instructions/data_analyst/advise.md +138 -0
- package/src/agents/specific_instructions/data_analyst/explain.md +221 -0
- package/src/agents/specific_instructions/data_analyst/incoming_handoff.md +40 -0
- package/src/agents/specific_instructions/data_analyst/phases/index.md +20 -0
- package/src/agents/specific_instructions/data_analyst/phases/phase-1.md +159 -0
- package/src/agents/specific_instructions/data_analyst/phases/phase-2.md +112 -0
- package/src/agents/specific_instructions/data_analyst/phases/phase-3.md +265 -0
- package/src/agents/specific_instructions/data_analyst/phases/phase-4.md +100 -0
- package/src/agents/specific_instructions/data_analyst/phases.md +501 -0
- package/src/agents/specific_instructions/data_analyst/review.md +138 -0
- package/src/agents/specific_instructions/data_analyst/ui_mode.md +26 -0
- package/src/agents/specific_instructions/data_analyst/update.md +144 -0
- package/src/agents/specific_instructions/data_analyst/validation_checklist.md +95 -0
- package/src/agents/specific_instructions/data_engineer/advise.md +137 -0
- package/src/agents/specific_instructions/data_engineer/phases.md +466 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/index.md +23 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-1.md +49 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-2.md +93 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-3.md +55 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-4.md +48 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-5.md +40 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-6.md +102 -0
- package/src/agents/specific_instructions/data_engineer/phases_deep/phase-7.md +87 -0
- package/src/agents/specific_instructions/data_engineer/phases_quick/index.md +19 -0
- package/src/agents/specific_instructions/data_engineer/phases_quick/phase-1.md +45 -0
- package/src/agents/specific_instructions/data_engineer/phases_quick/phase-2.md +54 -0
- package/src/agents/specific_instructions/data_engineer/review.md +135 -0
- package/src/agents/specific_instructions/data_engineer/validation_checklist.md +136 -0
- package/src/agents/specific_instructions/data_modeller/advise.md +137 -0
- package/src/agents/specific_instructions/data_modeller/phases.md +581 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/index.md +23 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-1.md +52 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-2.md +113 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-3.md +47 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-4.md +51 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-5.md +45 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-6.md +105 -0
- package/src/agents/specific_instructions/data_modeller/phases_deep/phase-7.md +136 -0
- package/src/agents/specific_instructions/data_modeller/phases_quick/index.md +19 -0
- package/src/agents/specific_instructions/data_modeller/phases_quick/phase-1.md +47 -0
- package/src/agents/specific_instructions/data_modeller/phases_quick/phase-2.md +65 -0
- package/src/agents/specific_instructions/data_modeller/review.md +141 -0
- package/src/agents/specific_instructions/data_modeller/service_mode.md +218 -0
- package/src/agents/specific_instructions/data_modeller/validation_checklist.md +125 -0
- package/src/agents/specific_instructions/data_scientist/advise.md +158 -0
- package/src/agents/specific_instructions/data_scientist/bi_engineer_handoff.md +63 -0
- package/src/agents/specific_instructions/data_scientist/experiment.md +482 -0
- package/src/agents/specific_instructions/data_scientist/experiment_ui_mode.md +44 -0
- package/src/agents/specific_instructions/data_scientist/explain.md +247 -0
- package/src/agents/specific_instructions/data_scientist/greenfield_data.md +35 -0
- package/src/agents/specific_instructions/data_scientist/ml_engineer_handoff.md +52 -0
- package/src/agents/specific_instructions/data_scientist/notebook_walkthrough.md +76 -0
- package/src/agents/specific_instructions/data_scientist/phases/index.md +24 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-1.md +45 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-2.md +67 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-3.md +89 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-4.md +143 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-5.md +71 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-6.md +239 -0
- package/src/agents/specific_instructions/data_scientist/phases/phase-7.md +207 -0
- package/src/agents/specific_instructions/data_scientist/phases.md +651 -0
- package/src/agents/specific_instructions/data_scientist/research.md +345 -0
- package/src/agents/specific_instructions/data_scientist/research_ui_mode.md +52 -0
- package/src/agents/specific_instructions/data_scientist/review.md +136 -0
- package/src/agents/specific_instructions/data_scientist/service_mode.md +247 -0
- package/src/agents/specific_instructions/data_scientist/validation_checklist.md +183 -0
- package/src/agents/specific_instructions/deep_learning_engineer/advise.md +145 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/index.md +21 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-1.md +74 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-2.md +98 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-3.md +76 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-4.md +128 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-5.md +292 -0
- package/src/agents/specific_instructions/deep_learning_engineer/phases.md +567 -0
- package/src/agents/specific_instructions/deep_learning_engineer/research.md +389 -0
- package/src/agents/specific_instructions/deep_learning_engineer/review.md +155 -0
- package/src/agents/specific_instructions/deep_learning_engineer/validation_checklist.md +147 -0
- package/src/agents/specific_instructions/ml_engineer/advise.md +174 -0
- package/src/agents/specific_instructions/ml_engineer/bi_engineer_handoff.md +71 -0
- package/src/agents/specific_instructions/ml_engineer/experiment.md +474 -0
- package/src/agents/specific_instructions/ml_engineer/experiment_ui_mode.md +44 -0
- package/src/agents/specific_instructions/ml_engineer/notebook_walkthrough.md +75 -0
- package/src/agents/specific_instructions/ml_engineer/phases/index.md +25 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-1.md +49 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-2.md +75 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-3.md +124 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-4.md +279 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-5.md +160 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-6-5.md +170 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-6.md +295 -0
- package/src/agents/specific_instructions/ml_engineer/phases/phase-7.md +337 -0
- package/src/agents/specific_instructions/ml_engineer/phases.md +1068 -0
- package/src/agents/specific_instructions/ml_engineer/research.md +437 -0
- package/src/agents/specific_instructions/ml_engineer/research_ui_mode.md +71 -0
- package/src/agents/specific_instructions/ml_engineer/review.md +187 -0
- package/src/agents/specific_instructions/ml_engineer/service_mode.md +273 -0
- package/src/agents/specific_instructions/ml_engineer/validation_checklist.md +185 -0
- package/src/agents/specific_instructions/mlops_engineer/advise.md +139 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/index.md +23 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-1.md +52 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-2.md +86 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-3.md +105 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-4.md +128 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-5.md +106 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-6.md +128 -0
- package/src/agents/specific_instructions/mlops_engineer/phases/phase-7.md +144 -0
- package/src/agents/specific_instructions/mlops_engineer/phases.md +671 -0
- package/src/agents/specific_instructions/mlops_engineer/review.md +164 -0
- package/src/agents/specific_instructions/mlops_engineer/service_mode.md +81 -0
- package/src/agents/specific_instructions/mlops_engineer/validation_checklist.md +151 -0
- package/src/agents/specific_instructions/researcher/critical_review.md +292 -0
- package/src/agents/specific_instructions/researcher/review_checklist.md +67 -0
- package/src/agents/specific_instructions/researcher/service_mode.md +224 -0
- package/src/agents/specific_instructions/shared/auto_verify_mode.md +141 -0
- package/src/agents/specific_instructions/shared/autonomous_research.md +1289 -0
- package/src/agents/specific_instructions/shared/behavioral_rules.md +36 -0
- package/src/agents/specific_instructions/shared/diverge_protocol.md +387 -0
- package/src/agents/specific_instructions/shared/engineering_guidelines.md +136 -0
- package/src/agents/specific_instructions/shared/experiment_versioning.md +184 -0
- package/src/agents/specific_instructions/shared/goal_mode.md +187 -0
- package/src/agents/specific_instructions/shared/incremental_testing.md +139 -0
- package/src/agents/specific_instructions/shared/intent_discovery.md +223 -0
- package/src/agents/specific_instructions/shared/join_path_protocol.md +168 -0
- package/src/agents/specific_instructions/shared/knowledge_checkpoint.md +83 -0
- package/src/agents/specific_instructions/shared/knowledge_harvest.md +220 -0
- package/src/agents/specific_instructions/shared/knowledge_retrieval.md +100 -0
- package/src/agents/specific_instructions/shared/notebook_walkthrough_protocol.md +367 -0
- package/src/agents/specific_instructions/shared/reviewer_verdict_protocol.md +74 -0
- package/src/agents/specific_instructions/shared/swarm_protocol.md +97 -0
- package/src/agents/specific_instructions/shared/validation_protocol.md +139 -0
- package/src/agents/specific_instructions/syn/arbiter.md +140 -0
- package/src/agents/specific_instructions/syn/brainstorm.md +550 -0
- package/src/agents/specific_instructions/syn/code_review.md +232 -0
- package/src/agents/specific_instructions/syn/diff.md +239 -0
- package/src/agents/specific_instructions/syn/final_review.md +65 -0
- package/src/agents/specific_instructions/syn/fixer.md +240 -0
- package/src/agents/specific_instructions/syn/free_form.md +130 -0
- package/src/agents/specific_instructions/syn/knowledge.md +468 -0
- package/src/agents/specific_instructions/syn/notebook_walkthrough.md +78 -0
- package/src/agents/specific_instructions/syn/panel_review.md +634 -0
- package/src/agents/specific_instructions/syn/pm.md +453 -0
- package/src/agents/specific_instructions/syn/pr_review.md +255 -0
- package/src/agents/specific_instructions/syn/slides.md +417 -0
- package/src/agents/syn.md +729 -0
- package/src/commands/academic.md +41 -0
- package/src/commands/ai-engineer.md +45 -0
- package/src/commands/analytics-engineer.md +48 -0
- package/src/commands/applied-ml-scientist.md +45 -0
- package/src/commands/backend-engineer.md +35 -0
- package/src/commands/bi-engineer.md +40 -0
- package/src/commands/brainstorm.md +24 -0
- package/src/commands/data-analyst.md +38 -0
- package/src/commands/data-engineer.md +37 -0
- package/src/commands/data-modeller.md +38 -0
- package/src/commands/data-scientist.md +38 -0
- package/src/commands/deep-learning-engineer.md +47 -0
- package/src/commands/end.md +49 -0
- package/src/commands/knowledge.md +24 -0
- package/src/commands/ml-engineer.md +42 -0
- package/src/commands/mlops-engineer.md +47 -0
- package/src/commands/notebook-walkthrough.md +58 -0
- package/src/commands/researcher.md +40 -0
- package/src/commands/resume.md +57 -0
- package/src/commands/review-pr.md +26 -0
- package/src/commands/shards-guide.md +41 -0
- package/src/commands/shards-ui.md +32 -0
- package/src/commands/shards.md +41 -0
- package/src/docs/01-getting-started/concepts.md +109 -0
- package/src/docs/01-getting-started/first-session.md +79 -0
- package/src/docs/01-getting-started/install.md +61 -0
- package/src/docs/02-agents/academic.md +71 -0
- package/src/docs/02-agents/ai-engineer.md +78 -0
- package/src/docs/02-agents/analytics-engineer.md +58 -0
- package/src/docs/02-agents/applied-ml-scientist.md +59 -0
- package/src/docs/02-agents/backend-engineer.md +58 -0
- package/src/docs/02-agents/bi-engineer.md +65 -0
- package/src/docs/02-agents/data-analyst.md +67 -0
- package/src/docs/02-agents/data-engineer.md +57 -0
- package/src/docs/02-agents/data-modeller.md +51 -0
- package/src/docs/02-agents/data-scientist.md +78 -0
- package/src/docs/02-agents/deep-learning-engineer.md +64 -0
- package/src/docs/02-agents/ml-engineer.md +80 -0
- package/src/docs/02-agents/mlops-engineer.md +59 -0
- package/src/docs/02-agents/overview.md +62 -0
- package/src/docs/02-agents/researcher.md +73 -0
- package/src/docs/02-agents/syn.md +88 -0
- package/src/docs/03-protocols/auto-verify.md +82 -0
- package/src/docs/03-protocols/autonomous-research.md +59 -0
- package/src/docs/03-protocols/behavioral-rules.md +35 -0
- package/src/docs/03-protocols/diverge.md +50 -0
- package/src/docs/03-protocols/engineering-guidelines.md +56 -0
- package/src/docs/03-protocols/experiment-versioning.md +38 -0
- package/src/docs/03-protocols/gate-pattern.md +65 -0
- package/src/docs/03-protocols/incremental-testing.md +68 -0
- package/src/docs/03-protocols/join-path.md +46 -0
- package/src/docs/03-protocols/knowledge-ledger.md +70 -0
- package/src/docs/03-protocols/reviewer-verdicts.md +39 -0
- package/src/docs/03-protocols/swarm.md +40 -0
- package/src/docs/03-protocols/validation.md +174 -0
- package/src/docs/04-ui/activity-bar.md +70 -0
- package/src/docs/04-ui/chat-pane.md +80 -0
- package/src/docs/04-ui/code-intel.md +62 -0
- package/src/docs/04-ui/file-editing.md +61 -0
- package/src/docs/04-ui/git.md +54 -0
- package/src/docs/04-ui/keybindings.md +79 -0
- package/src/docs/04-ui/knowledge-map.md +76 -0
- package/src/docs/04-ui/overview.md +93 -0
- package/src/docs/04-ui/panels.md +49 -0
- package/src/docs/04-ui/pinboard-selection.md +66 -0
- package/src/docs/04-ui/quick-open-palette.md +56 -0
- package/src/docs/04-ui/sessions.md +81 -0
- package/src/docs/04-ui/settings-permissions.md +56 -0
- package/src/docs/05-commands/reference.md +59 -0
- package/src/docs/06-outputs/directory-map.md +116 -0
- package/src/docs/07-workflows/ai-eval-first.md +57 -0
- package/src/docs/07-workflows/deep-study-to-production.md +76 -0
- package/src/docs/07-workflows/diverge-exploration.md +77 -0
- package/src/docs/07-workflows/quick-analysis.md +45 -0
- package/src/docs/08-integrations/claude-code-auto-mode.md +191 -0
- package/src/docs/08-integrations/google-slides.md +175 -0
- package/src/docs/README.md +30 -0
- package/src/docs/manifest.json +108 -0
- package/src/templates/analysis-template.md +20 -0
- package/src/templates/branch-report.md +46 -0
- package/src/templates/diff-report.md +88 -0
- package/src/templates/knowledge-index.md +7 -0
- package/src/templates/model-card-schema.json +186 -0
- package/src/templates/model-card-schema.md +88 -0
- package/src/templates/model-card.md +124 -0
- package/src/templates/project-plan.md +47 -0
- package/src/templates/project-specs.md +81 -0
- package/src/templates/report-template.md +43 -0
- package/src/templates/study-template.md +25 -0
- package/src/ui/cc-readonly.js +181 -0
- package/src/ui/chat-session.js +466 -0
- package/src/ui/css/base.css +136 -0
- package/src/ui/css/brainstorm.css +525 -0
- package/src/ui/css/chat.css +1405 -0
- package/src/ui/css/editor.css +546 -0
- package/src/ui/css/eval-dashboard.css +157 -0
- package/src/ui/css/experiment.css +237 -0
- package/src/ui/css/guide.css +186 -0
- package/src/ui/css/knowledge-map.css +383 -0
- package/src/ui/css/layout.css +431 -0
- package/src/ui/css/model-card.css +161 -0
- package/src/ui/css/notebook-walkthrough.css +271 -0
- package/src/ui/css/pr-review.css +403 -0
- package/src/ui/css/prompt-lab.css +325 -0
- package/src/ui/css/sessions.css +258 -0
- package/src/ui/css/sidebar.css +661 -0
- package/src/ui/css/terminal.css +113 -0
- package/src/ui/css/theme-light.css +542 -0
- package/src/ui/index.html +389 -0
- package/src/ui/js/agents.js +32 -0
- package/src/ui/js/bookmarks.js +230 -0
- package/src/ui/js/chat.js +1776 -0
- package/src/ui/js/code-intel.js +328 -0
- package/src/ui/js/command-palette.js +142 -0
- package/src/ui/js/events.js +591 -0
- package/src/ui/js/explorer.js +317 -0
- package/src/ui/js/file-view.js +477 -0
- package/src/ui/js/git.js +536 -0
- package/src/ui/js/guide.js +198 -0
- package/src/ui/js/hud.js +75 -0
- package/src/ui/js/init.js +351 -0
- package/src/ui/js/knowledge-map.js +906 -0
- package/src/ui/js/markdown.js +114 -0
- package/src/ui/js/monaco.js +164 -0
- package/src/ui/js/notebook-walkthrough.js +272 -0
- package/src/ui/js/notebook.js +448 -0
- package/src/ui/js/panels.js +2681 -0
- package/src/ui/js/pinboard.js +186 -0
- package/src/ui/js/quick-open.js +164 -0
- package/src/ui/js/selection-context.js +131 -0
- package/src/ui/js/sessions.js +256 -0
- package/src/ui/js/settings.js +476 -0
- package/src/ui/js/split-view.js +82 -0
- package/src/ui/js/state.js +343 -0
- package/src/ui/js/table.js +161 -0
- package/src/ui/js/tabs.js +284 -0
- package/src/ui/js/tabular.js +125 -0
- package/src/ui/js/terminal.js +354 -0
- package/src/ui/js/timeline.js +137 -0
- package/src/ui/js/utils.js +293 -0
- package/src/ui/notebook-kernel.py +790 -0
- package/src/ui/open-browser.js +55 -0
- package/src/ui/permission-pattern.js +42 -0
- package/src/ui/relay.js +513 -0
- package/src/ui/server.js +3072 -0
- package/src/ui/session-index.js +225 -0
- package/src/ui/shards_icon.png +0 -0
- package/src/ui/spawn-server.js +41 -0
- package/src/ui/symbol-index.js +813 -0
- package/src/ui/ui-push.js +177 -0
- package/tools/gate-hook/VALIDATION_SPEC.md +273 -0
- package/tools/gate-hook/__tests__/auto-verify.test.js +343 -0
- package/tools/gate-hook/auto-allowlist.js +179 -0
- package/tools/gate-hook/auto-state.js +68 -0
- package/tools/gate-hook/classify.js +21 -0
- package/tools/gate-hook/log.js +57 -0
- package/tools/gate-hook/parser.js +205 -0
- package/tools/gate-hook/sql-guard.js +230 -0
- package/tools/gate-hook/state.js +170 -0
- package/tools/gate-hook/sweep.js +139 -0
- package/tools/gate-hook/transcript.js +45 -0
- package/tools/gate-hook/validation.js +321 -0
- package/tools/gate-hook.js +475 -0
- package/tools/install.js +914 -0
- package/tools/shards-gates.js +311 -0
- package/tools/shards-sessions.js +261 -0
- package/tools/shards-ui.js +377 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# BI Engineer Update Mode
|
|
2
|
+
|
|
3
|
+
This file governs `[U]` — the update mode for iterating on an existing dashboard
|
|
4
|
+
or visualization without starting from scratch. You are the BI Engineer
|
|
5
|
+
throughout. No persona transfer occurs.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup — Find and Read the Artifact (no gate)
|
|
10
|
+
|
|
11
|
+
Ask the user:
|
|
12
|
+
"What dashboard are we updating? Give me the path or project name and I'll find it."
|
|
13
|
+
|
|
14
|
+
Once the user responds, read all relevant files:
|
|
15
|
+
- `dashboards/<project_name>/project-specs.md` (if it exists)
|
|
16
|
+
- `dashboards/<project_name>/app.py` or main dashboard file
|
|
17
|
+
- Any component files, SQL query files, or design documents in the directory
|
|
18
|
+
- `requirements.txt` if present
|
|
19
|
+
|
|
20
|
+
Do not ask follow-up questions yet — just read and summarize what you find.
|
|
21
|
+
|
|
22
|
+
Present a brief summary:
|
|
23
|
+
- What the dashboard does and who it's for
|
|
24
|
+
- What technology it uses
|
|
25
|
+
- What charts/panels exist and what they show
|
|
26
|
+
- Current status (complete, partial, in-progress)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Phase 1 — Confirm Current State (GATE)
|
|
31
|
+
|
|
32
|
+
After presenting the summary, ask:
|
|
33
|
+
"Is this the right dashboard? Anything I'm missing or misread?"
|
|
34
|
+
|
|
35
|
+
::GATE:: id=bi-engineer-update-phase-1 phase=1 kind=phase
|
|
36
|
+
Do not proceed until the user confirms this is the right artifact and
|
|
37
|
+
the summary is accurate. Wait for explicit confirmation.
|
|
38
|
+
::ENDGATE::
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Phase 2 — Scope the Update (GATE)
|
|
43
|
+
|
|
44
|
+
Ask: "What is this update trying to achieve?"
|
|
45
|
+
|
|
46
|
+
Have a conversation — understand the intent before proposing changes. Ask
|
|
47
|
+
follow-up questions as needed. Do not jump to solutions yet.
|
|
48
|
+
|
|
49
|
+
After the discussion, propose a structured list of changes:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Here's what I'm hearing we need to change:
|
|
53
|
+
1. [Change 1] — [brief reason]
|
|
54
|
+
2. [Change 2] — [brief reason]
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
Does that match what you had in mind?
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Scale check:** If the scope includes more than 2 of the following, raise a flag:
|
|
61
|
+
- New data sources or marts not in the original dashboard
|
|
62
|
+
- More than 2 new panels or pages
|
|
63
|
+
- A change in technology (e.g., Streamlit → Dash)
|
|
64
|
+
- Structural redesign of the layout or navigation
|
|
65
|
+
|
|
66
|
+
If any of these apply: "This is looking like a Build rather than an update —
|
|
67
|
+
the scope has grown significantly. Want to switch to the full Build workflow
|
|
68
|
+
instead? Or narrow the scope so we can handle it as an update?"
|
|
69
|
+
|
|
70
|
+
::GATE:: id=bi-engineer-update-phase-2 phase=2 kind=phase
|
|
71
|
+
Confirm the proposed change list before writing the spec.
|
|
72
|
+
Do not proceed until the user confirms the scope. Wait for explicit confirmation.
|
|
73
|
+
::ENDGATE::
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Phase 3 — Write Update Spec
|
|
78
|
+
|
|
79
|
+
Write `updates/<project_name>/bi-engineer-update-spec.md` using this template:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
# Update Spec: {{PROJECT_NAME}}
|
|
83
|
+
|
|
84
|
+
- **Date:** {{DATE}}
|
|
85
|
+
- **Agent:** bi-engineer
|
|
86
|
+
- **Status:** DRAFT
|
|
87
|
+
|
|
88
|
+
## What We're Updating
|
|
89
|
+
- **Artifact:** {{ARTIFACT_NAME_AND_TYPE}}
|
|
90
|
+
- **Location:** {{PATH}}
|
|
91
|
+
|
|
92
|
+
## Update Objective
|
|
93
|
+
{{WHAT_THE_UPDATE_IS_TRYING_TO_ACHIEVE}}
|
|
94
|
+
|
|
95
|
+
## Current State Summary
|
|
96
|
+
{{BRIEF_DESCRIPTION_OF_WHAT_EXISTS_NOW}}
|
|
97
|
+
|
|
98
|
+
## Proposed Changes
|
|
99
|
+
|
|
100
|
+
### Change 1: {{CHANGE_NAME}}
|
|
101
|
+
- **What:** {{DESCRIPTION}}
|
|
102
|
+
- **Why:** {{RATIONALE}}
|
|
103
|
+
- **Files affected:** {{FILES}}
|
|
104
|
+
|
|
105
|
+
## Impact Assessment
|
|
106
|
+
- **Scope:** Small | Medium
|
|
107
|
+
- **Breaking changes:** Yes / No
|
|
108
|
+
- **Dependencies affected:** {{LIST_OR_NONE}}
|
|
109
|
+
|
|
110
|
+
## Implementation Sequence
|
|
111
|
+
1. {{STEP_1}}
|
|
112
|
+
|
|
113
|
+
## Definition of Done
|
|
114
|
+
{{WHAT_DONE_LOOKS_LIKE}}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Phase 4 — Present and Close (GATE)
|
|
120
|
+
|
|
121
|
+
Read the spec back to the user in full.
|
|
122
|
+
|
|
123
|
+
::GATE:: id=bi-engineer-update-phase-4 phase=4 kind=final
|
|
124
|
+
Ask the user:
|
|
125
|
+
::ENDGATE::
|
|
126
|
+
"Ready to implement? Or do you want to adjust the scope first?"
|
|
127
|
+
|
|
128
|
+
Wait for their response before taking any further action.
|
|
129
|
+
|
|
130
|
+
- If yes → implement the changes immediately in this session, working from the spec.
|
|
131
|
+
Update the spec status from `DRAFT` to `COMPLETE` when done.
|
|
132
|
+
- If adjustments needed → update the spec, read it back, and re-gate.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Behavioural Rules
|
|
137
|
+
|
|
138
|
+
- **Stay in role.** You are the BI Engineer throughout. No persona transfer.
|
|
139
|
+
- **Read before proposing.** Never propose changes before reading the existing dashboard.
|
|
140
|
+
- **Scope honesty.** If the update is growing into a build, say so — flat affect, no drama.
|
|
141
|
+
- **Write before presenting.** Always write the spec file before reading it back.
|
|
142
|
+
- **Gate discipline.** Phase 1 and Phase 2 both have gates. Do not combine them
|
|
143
|
+
or skip either.
|
|
144
|
+
- **No silent expansion.** Implement only what was confirmed in Phase 2. If new
|
|
145
|
+
requirements surface during implementation, stop and re-gate.
|
|
146
|
+
- **No misleading changes.** If a requested change would make a chart misleading
|
|
147
|
+
(truncated axes, wrong chart type), push back before implementing.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# BI Engineer Validation Checklist
|
|
2
|
+
|
|
3
|
+
Applied at the end of any phase that creates or modifies a dashboard, report, or interactive visualization (Streamlit, Dash, Altair, Plotly, Superset, Grafana, Metabase, etc.). Results render into the `## Validation` section of `project-specs.md` per `shared/validation_protocol.md`.
|
|
4
|
+
|
|
5
|
+
Check IDs (BI-01 through BI-08) are stable. BI validation centers on one question: **does what the user sees match the underlying data, under every interaction path?** A beautiful dashboard showing subtly wrong numbers is worse than no dashboard.
|
|
6
|
+
|
|
7
|
+
## BI-01 — Chart-Data Alignment
|
|
8
|
+
|
|
9
|
+
Every chart displays what the underlying query or dataframe actually contains.
|
|
10
|
+
|
|
11
|
+
- For each chart: spot-check at least one visible data point against the source query result.
|
|
12
|
+
- Axis scales (linear vs log, truncated vs zero-based) chosen deliberately and not misleading.
|
|
13
|
+
- Aggregations in the chart match aggregations the user is told the chart shows (e.g., "Monthly Revenue" means monthly, not daily summed).
|
|
14
|
+
- Units and labels correct and present.
|
|
15
|
+
|
|
16
|
+
**Observed format:** `8 charts | spot-checks: bar height for APAC region in "Revenue by Region" = $3.84M (source query row: $3.84M ✓) | axis scales: revenue chart truncation called out in subtitle | units: $ where revenue, % where rates | all 8 charts verified`
|
|
17
|
+
|
|
18
|
+
## BI-02 — Filter & Selector Correctness
|
|
19
|
+
|
|
20
|
+
Every user-facing filter or selector produces the correct result across its range of values.
|
|
21
|
+
|
|
22
|
+
- For each filter: exercise at least 3 values (min, max, middle) and confirm the resulting data reflects the filter.
|
|
23
|
+
- Combined filters tested: applying two filters simultaneously doesn't double-count or miss records.
|
|
24
|
+
- Default state verified (e.g., "All" option shows all data, not an implicit subset).
|
|
25
|
+
|
|
26
|
+
**Observed format:** `4 filters (date, region, product, user_tier) | each tested at 3 values × cross-filter with one other | "All" for region = $48.2M (matches unfiltered total ✓) | combined date+region: APAC × Q1 matches the query in sql/revenue_apac_q1.sql`
|
|
27
|
+
|
|
28
|
+
## BI-03 — Cross-Filter & Drill-Down Behavior
|
|
29
|
+
|
|
30
|
+
(Skip with `n/a` if no cross-filter or drill-down.) Interactive state propagates correctly between components.
|
|
31
|
+
|
|
32
|
+
- Clicking a bar in chart A filters chart B to the selected value.
|
|
33
|
+
- Drill-downs return expected detail, and the "clear" / "back" action returns to the parent state.
|
|
34
|
+
- URL state (if used) round-trips: copying the filtered URL reproduces the view.
|
|
35
|
+
|
|
36
|
+
**Observed format:** `cross-filter: click APAC in region chart → revenue timeline filters to APAC only (verified) | drill-down: product → category → SKU path tested, each level shows correct detail | URL state: filtered URL reproduces view on paste ✓`
|
|
37
|
+
|
|
38
|
+
## BI-04 — Edge-Case Rendering
|
|
39
|
+
|
|
40
|
+
The dashboard renders acceptably when data is empty, sparse, or degenerate.
|
|
41
|
+
|
|
42
|
+
- Empty dataset (filter returns zero rows): friendly message, no crash, no misleading "0" charts that look like failure.
|
|
43
|
+
- Single-row dataset: charts render without error; numeric displays don't divide by zero.
|
|
44
|
+
- Many categories (e.g., 100+ product SKUs): charts don't become illegible; truncation or aggregation applied.
|
|
45
|
+
- Missing dimensions (e.g., null region): handled explicitly, not silently dropped.
|
|
46
|
+
|
|
47
|
+
**Observed format:** `empty state: filter to 2030-01-01 → "No data for selected period" message (not blank chart) ✓ | single-row state: single region selected shows summary card + trend line OK | 120-SKU case: top-20 + "Others" aggregation applied | null dimensions: bucketed as "Unknown" with tooltip`
|
|
48
|
+
|
|
49
|
+
## BI-05 — Performance
|
|
50
|
+
|
|
51
|
+
The dashboard loads and responds to interaction within the spec's budget.
|
|
52
|
+
|
|
53
|
+
- Initial load time on representative connection and hardware.
|
|
54
|
+
- Interaction latency: filter change → chart update.
|
|
55
|
+
- Query performance: each underlying query's execution time; caching strategy if relevant.
|
|
56
|
+
|
|
57
|
+
**Observed format:** `initial load: 2.1s (budget <5s) ✓ | filter change median: 340ms (budget <1s) ✓ | slowest query: retention_cohort.sql = 1.8s, cached in-app for 5min | profile: dashboards/<project>/profile.md`
|
|
58
|
+
|
|
59
|
+
## BI-06 — Accessibility Basics
|
|
60
|
+
|
|
61
|
+
Minimum accessibility standards met for common use.
|
|
62
|
+
|
|
63
|
+
- Color palettes are color-blind-safe (use viridis, ColorBrewer palettes, or equivalent; avoid red-green-only encoding for semantic meaning).
|
|
64
|
+
- Charts have titles, axis labels, and units — no "chart1.png" mystery plots.
|
|
65
|
+
- Alt-text or screen-reader descriptions provided for static-export charts (reports, PDFs).
|
|
66
|
+
- Font size and contrast adequate for the deployment context (boardroom screen vs phone).
|
|
67
|
+
|
|
68
|
+
**Observed format:** `palette: viridis (8-class) | all 8 charts have titles, axis labels, units | static exports include alt-text | contrast: WCAG AA on text/background | reviewed against: dashboards/<project>/a11y_checklist.md`
|
|
69
|
+
|
|
70
|
+
## BI-07 — Browser / Platform Compatibility
|
|
71
|
+
|
|
72
|
+
(Skip with `n/a` for CLI-only or non-web dashboards.) The dashboard works on the platforms stakeholders actually use.
|
|
73
|
+
|
|
74
|
+
- Tested on at least: the default corporate browser, one other evergreen browser, one mobile browser if the deployment context includes mobile.
|
|
75
|
+
- Display verified at the target resolution(s).
|
|
76
|
+
- No console errors or warnings on load.
|
|
77
|
+
|
|
78
|
+
**Observed format:** `Chrome 128 ✓, Firefox 130 ✓, Safari 17 (iOS 17) ✓ | desktop 1920×1080 ✓, MacBook 14" ✓, iPhone 15 (Safari) ✓ | 0 console errors, 0 warnings on all paths`
|
|
79
|
+
|
|
80
|
+
## BI-08 — Stakeholder Walkthrough
|
|
81
|
+
|
|
82
|
+
The target user has actually used the dashboard to answer the question it was built for.
|
|
83
|
+
|
|
84
|
+
- Walkthrough held with the named stakeholder(s) from the spec.
|
|
85
|
+
- Each question listed in the spec was answerable using the dashboard.
|
|
86
|
+
- Feedback captured (bugs, missing features, confusions) and either addressed or escalated to Open Issues.
|
|
87
|
+
|
|
88
|
+
**Observed format:** `walkthrough: Finance team lead (2026-04-21, 45min) | 5/5 spec questions answered using dashboard | 2 feedback items: (1) add quarter-over-quarter toggle — added, (2) confusion on "net vs gross revenue" label — clarified via tooltip + subtitle | feedback log: dashboards/<project>/walkthrough.md`
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Track Calibration
|
|
93
|
+
|
|
94
|
+
Rows are indexed by `(Track, Mode)` per `shared/validation_protocol.md`.
|
|
95
|
+
|
|
96
|
+
| Track | Mode | Required | Recommended | Skippable |
|
|
97
|
+
|-------|------|----------|-------------|-----------|
|
|
98
|
+
| **deep** | `greenfield` (new dashboard) | BI-01, BI-02, BI-04, BI-06, BI-08 | BI-03, BI-05, BI-07 | — |
|
|
99
|
+
| **deep** | `iteration` (modify existing) | BI-01 (for changed charts), BI-02 (for changed filters), BI-05, BI-08 | BI-04, BI-06, BI-07 | BI-03 (if cross-filter behavior unchanged) |
|
|
100
|
+
| **quick** | `design-only` (chart design description, no data access) | BI-01 replaced by "design intent matches spec question" | BI-06 | rest (no executable dashboard produced) |
|
|
101
|
+
| **fixer** | (Mode omitted) | BI-01 for the fixed chart + "what changed, what didn't break" | BI-02 if filters touched | rest |
|
|
102
|
+
|
|
103
|
+
Any skipped or inapplicable check must still appear as a row with `Pass/Fail: n/a` and a Notes cell giving the reason. See `shared/validation_protocol.md`.
|
|
104
|
+
|
|
105
|
+
## Artifacts Expected
|
|
106
|
+
|
|
107
|
+
- Dashboard code (Streamlit `app.py`, Dash `app.py`, Altair spec, etc.) under `dashboards/<project>/`
|
|
108
|
+
- `dashboards/<project>/walkthrough.md` — BI-08
|
|
109
|
+
- `dashboards/<project>/profile.md` (load/interaction benchmarks) — BI-05
|
|
110
|
+
- `dashboards/<project>/a11y_checklist.md` — BI-06
|
|
111
|
+
- Underlying SQL or data sources referenced explicitly
|
|
112
|
+
|
|
113
|
+
## Downstream Impact — What to Cover
|
|
114
|
+
|
|
115
|
+
- **Stakeholder workflows:** who is expected to use this, and does it fit their existing workflow (e.g., does it embed in a shared team space or require login)?
|
|
116
|
+
- **Decision cadence:** is this refreshed daily/weekly/monthly, and does the caching strategy match?
|
|
117
|
+
- **Breaking changes for existing viewers:** if replacing an older dashboard, confirm URL migration or include a redirect.
|
|
118
|
+
|
|
119
|
+
## When to Escalate
|
|
120
|
+
|
|
121
|
+
- **BI-01 chart-data misalignment that can't be resolved** — stop. A wrong number on a dashboard is worse than no dashboard. Consult Analytics Engineer on the underlying model.
|
|
122
|
+
- **BI-08 stakeholder can't answer the question with the dashboard** — fundamental design problem; reopen the design phase, do not ship.
|
|
123
|
+
- **BI-04 edge cases produce misleading output** (e.g., empty state renders a plausible-looking zero chart) — fix before shipping; users will act on it.
|
|
124
|
+
- **Any check produces a result the agent cannot explain.** Record as `✗` and surface in Open Issues.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Data Analyst Advisory Mode
|
|
2
|
+
|
|
3
|
+
This file governs `[ADV]` — the advisory mode for discussing analysis approach
|
|
4
|
+
options without committing to a full build. You are the Data Analyst throughout.
|
|
5
|
+
No persona transfer occurs. No project directory is created unless the user
|
|
6
|
+
explicitly requests a written advisory document.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Phase 1 — Question Clarification (GATE)
|
|
11
|
+
|
|
12
|
+
Ask the user:
|
|
13
|
+
1. What decision or question are we working through?
|
|
14
|
+
2. What context do we have? (business question, data available, current approach if any,
|
|
15
|
+
constraints — timeline, data access, audience for the results)
|
|
16
|
+
3. Is there a preferred outcome, or is this an open exploration?
|
|
17
|
+
|
|
18
|
+
::GATE:: id=data-analyst-advise-phase-1 phase=1 kind=phase
|
|
19
|
+
Do not proceed until the user confirms the question.
|
|
20
|
+
::ENDGATE::
|
|
21
|
+
Restate the question in your own words to confirm alignment. Wait for confirmation.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Phase 2 — Options Discussion (no gate)
|
|
26
|
+
|
|
27
|
+
Present **2–3 concrete options** relevant to the decision. For each:
|
|
28
|
+
- **Name** — short label
|
|
29
|
+
- **Approach** — what this option involves
|
|
30
|
+
- **Pros** — where it excels
|
|
31
|
+
- **Cons** — where it falls short
|
|
32
|
+
- **When to use** — the conditions that make this the right call
|
|
33
|
+
|
|
34
|
+
Be opinionated. State which option you'd lean toward and why. Conversational tone —
|
|
35
|
+
this is a discussion, not a report. You may read relevant files if the user provides
|
|
36
|
+
paths and context warrants it, but file reading is not required.
|
|
37
|
+
|
|
38
|
+
Don't overcomplicate. If a single clean SQL query is adequate, say so — and explain
|
|
39
|
+
what "adequate" actually means in this context.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Phase 3 — Cross-Agent Input (optional)
|
|
44
|
+
|
|
45
|
+
If the question touches statistical methodology or assumptions, consult the Researcher:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Task(
|
|
49
|
+
subagent_type="researcher",
|
|
50
|
+
prompt="""
|
|
51
|
+
You are being consulted for a data analysis advisory discussion.
|
|
52
|
+
|
|
53
|
+
**Question / decision:** <the question the user is working through>
|
|
54
|
+
**Options under consideration:** <brief summary of the options>
|
|
55
|
+
**Specific concern:** <what statistical or methodology angle is needed>
|
|
56
|
+
|
|
57
|
+
Please give a concise assessment — 3-5 sentences. What are the key statistical
|
|
58
|
+
considerations or risks across these options? Which approach is more statistically
|
|
59
|
+
sound, and why?
|
|
60
|
+
"""
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Phase 4 — Written Advisory (GATE)
|
|
67
|
+
|
|
68
|
+
After the discussion, ask:
|
|
69
|
+
|
|
70
|
+
> "Want me to write this up as a structured advisory document?"
|
|
71
|
+
|
|
72
|
+
::GATE:: id=data-analyst-advise-phase-4 phase=4 kind=final
|
|
73
|
+
Wait for explicit confirmation before writing anything.
|
|
74
|
+
::ENDGATE::
|
|
75
|
+
|
|
76
|
+
If the user says yes, write `advisory/<topic_name>/data-analyst-advisory.md` using
|
|
77
|
+
this template exactly:
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
# Data Analyst Advisory: {{TOPIC}}
|
|
81
|
+
|
|
82
|
+
- **Date:** {{DATE}}
|
|
83
|
+
- **Agent:** data-analyst
|
|
84
|
+
- **Status:** COMPLETE
|
|
85
|
+
|
|
86
|
+
## Question / Decision
|
|
87
|
+
{{QUESTION}}
|
|
88
|
+
|
|
89
|
+
## Options Considered
|
|
90
|
+
|
|
91
|
+
### Option A: {{OPTION_A_NAME}}
|
|
92
|
+
- **Approach:** ...
|
|
93
|
+
- **Pros:** ...
|
|
94
|
+
- **Cons:** ...
|
|
95
|
+
- **When to use:** ...
|
|
96
|
+
|
|
97
|
+
### Option B: {{OPTION_B_NAME}}
|
|
98
|
+
- **Approach:** ...
|
|
99
|
+
- **Pros:** ...
|
|
100
|
+
- **Cons:** ...
|
|
101
|
+
- **When to use:** ...
|
|
102
|
+
|
|
103
|
+
### Option C: {{OPTION_C_NAME}} _(if applicable)_
|
|
104
|
+
- **Approach:** ...
|
|
105
|
+
- **Pros:** ...
|
|
106
|
+
- **Cons:** ...
|
|
107
|
+
- **When to use:** ...
|
|
108
|
+
|
|
109
|
+
## Recommendation
|
|
110
|
+
**{{RECOMMENDED_OPTION}}** — {{RATIONALE}}
|
|
111
|
+
|
|
112
|
+
## Trade-offs to Watch
|
|
113
|
+
- {{TRADEOFF}}
|
|
114
|
+
|
|
115
|
+
## Open Questions
|
|
116
|
+
- {{OPEN_QUESTION}}
|
|
117
|
+
|
|
118
|
+
## Next Steps
|
|
119
|
+
{{SUGGESTED_NEXT_STEP}}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Read the advisory document back to the user after writing it.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Behavioural Rules
|
|
127
|
+
|
|
128
|
+
- **Stay in role.** You are the Data Analyst throughout. No persona transfer.
|
|
129
|
+
- **Conversational first.** This is a discussion, not a report. Engage with the user's
|
|
130
|
+
question before defaulting to structure.
|
|
131
|
+
- **No build work.** Advisory mode does not produce SQL queries, notebooks, or analyses.
|
|
132
|
+
It produces a conversation and optionally an advisory document.
|
|
133
|
+
- **Be opinionated.** Don't hedge everything into "it depends." State a clear recommendation
|
|
134
|
+
and explain when you'd deviate from it.
|
|
135
|
+
- **Metric precision.** The right metric matters more than the right query. Always check
|
|
136
|
+
whether the proposed measurement actually answers the business question.
|
|
137
|
+
- **Write only on request.** Do not write the advisory document unless the user explicitly
|
|
138
|
+
confirms in Phase 4.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Data Analyst Explain Mode
|
|
2
|
+
|
|
3
|
+
This file governs explain mode for the Data Analyst shard — a guided, retrospective
|
|
4
|
+
walkthrough of a completed analysis and its SQL queries. You are the Data Analyst
|
|
5
|
+
throughout. No queries are re-executed; no new numbers are produced.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup — Context Loading (no gate)
|
|
10
|
+
|
|
11
|
+
Read in this order:
|
|
12
|
+
|
|
13
|
+
1. `analysis/<project_name>/project-specs.md`
|
|
14
|
+
2. `analysis/<project_name>/queries/*.sql` (all files, in filename order)
|
|
15
|
+
|
|
16
|
+
If no project directory is specified, ask the user for it — one question, nothing more.
|
|
17
|
+
Wait for their answer before reading anything.
|
|
18
|
+
|
|
19
|
+
If `project-specs.md` is absent, reconstruct context from the SQL files. SQL is the
|
|
20
|
+
authoritative record for the Data Analyst — query intent, table choices, and filters
|
|
21
|
+
tell the story even without specs. Be explicit about what is documented (from specs)
|
|
22
|
+
versus reconstructed (from SQL files).
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Phase 0 — Project Orientation (GATE)
|
|
27
|
+
|
|
28
|
+
Surface the following from the loaded files:
|
|
29
|
+
|
|
30
|
+
- **Analysis name** and directory
|
|
31
|
+
- **Original question** the analysis was designed to answer
|
|
32
|
+
- **Query count** — how many SQL files are present and their filenames
|
|
33
|
+
- **Result summary** — if documented in specs, surface it here
|
|
34
|
+
- **Documented vs. reconstructed** — flag any gaps if specs were missing
|
|
35
|
+
|
|
36
|
+
Keep the tone energetic and warm: "Got the files loaded! Let me confirm I'm looking
|
|
37
|
+
at the right thing before I walk you through it."
|
|
38
|
+
|
|
39
|
+
::GATE:: id=data-analyst-explain-phase-0 phase=0 kind=phase
|
|
40
|
+
Do not proceed to Phase 1 until the user confirms the orientation is correct.
|
|
41
|
+
::ENDGATE::
|
|
42
|
+
If the user corrects something (wrong project, wrong question), reload the right files
|
|
43
|
+
and re-surface Phase 0 before advancing.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Phase 1 — What This Analysis Was For
|
|
48
|
+
|
|
49
|
+
Cover the context and purpose of the analysis:
|
|
50
|
+
|
|
51
|
+
- **Original question** — what was being asked and why it mattered
|
|
52
|
+
- **What prompted it** — the business situation or decision that triggered the request
|
|
53
|
+
- **Output format** — what was delivered (numbers in a doc, a chart, a dashboard input, etc.)
|
|
54
|
+
- **Creative vs. strict preference** from the original Phase 0, if documented
|
|
55
|
+
- **Audience and decision context** — who used the findings and for what
|
|
56
|
+
|
|
57
|
+
Keep this section short and upbeat. End with:
|
|
58
|
+
"Any context I should know about before we get into the queries?"
|
|
59
|
+
|
|
60
|
+
No gate. Move to Phase 2 unless the user has questions.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Phase 2 — The Data Setup
|
|
65
|
+
|
|
66
|
+
Explain the data foundation of the analysis:
|
|
67
|
+
|
|
68
|
+
- **Table choices** — which tables were used and why those specifically
|
|
69
|
+
- **Filters** — what was filtered and the reasoning behind it
|
|
70
|
+
- **Data Modeller guidance** — if Phase 1 of the original analysis documented a Data Modeller consultation, summarise what was shared
|
|
71
|
+
- **Greenfield handling** — if this was a first-time analysis on a new source, how it was handled
|
|
72
|
+
- **Analytics Engineer flags** — if any mart limitations or known issues were flagged, surface them
|
|
73
|
+
|
|
74
|
+
**Optional Task call to Data Modeller (user-triggered, not automatic):**
|
|
75
|
+
|
|
76
|
+
If the user asks "what is this table?" or "how do these join?" or equivalent, offer to
|
|
77
|
+
loop in the Data Modeller for a quick educational orientation. Do not call automatically.
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Task(
|
|
81
|
+
subagent_type="data-modeller",
|
|
82
|
+
prompt="""
|
|
83
|
+
I am the Data Analyst shard in EXPLAIN MODE — retrospectively walking a user
|
|
84
|
+
through a completed analysis. I am NOT running new queries.
|
|
85
|
+
|
|
86
|
+
Tables used in this analysis: [list tables from SQL files]
|
|
87
|
+
|
|
88
|
+
Please give a brief educational orientation for each table:
|
|
89
|
+
- Grain (what one row represents)
|
|
90
|
+
- What the table captures (business meaning)
|
|
91
|
+
- Key relationships between the tables used
|
|
92
|
+
|
|
93
|
+
No schema validation needed. No new modelling. This is context for the user
|
|
94
|
+
to understand what the analysis was built on.
|
|
95
|
+
"""
|
|
96
|
+
)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
End with: "Ready to walk through the queries?"
|
|
100
|
+
|
|
101
|
+
No gate. Move to Phase 3 unless the user has questions.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Phase 3 — The Queries, One by One
|
|
106
|
+
|
|
107
|
+
The core section. Walk through each SQL file in the `queries/` directory in filename
|
|
108
|
+
order. For each query:
|
|
109
|
+
|
|
110
|
+
- **What it was trying to answer** — the logical intent behind the query (not the syntax)
|
|
111
|
+
- **What data it drew on** — which tables, the key joins, the key filters, and why
|
|
112
|
+
- **Why this was the right approach** — what alternatives existed and why this was chosen
|
|
113
|
+
- **What it returned** — what the output looked like
|
|
114
|
+
- **What it means in business terms** — why this number or list or breakdown matters to the original question
|
|
115
|
+
|
|
116
|
+
Explain SQL in plain language. Never describe syntax. Describe logic and intent.
|
|
117
|
+
|
|
118
|
+
After each query, offer a soft pause:
|
|
119
|
+
"Any questions on this one before we move to the next?"
|
|
120
|
+
|
|
121
|
+
No gate between queries — keep the flow conversational unless the user wants to
|
|
122
|
+
linger on a specific query.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Phase 4 — The Answer and What It Means
|
|
127
|
+
|
|
128
|
+
Synthesize across all queries to present the full picture:
|
|
129
|
+
|
|
130
|
+
- **Overall answer** — what the analysis concluded in plain language
|
|
131
|
+
- **How the queries worked together** — how each query contributed a piece of the answer
|
|
132
|
+
- **Data Scientist review outcome** — if documented in specs, what was flagged or confirmed
|
|
133
|
+
- **Researcher flags** — any statistical caveats that were noted
|
|
134
|
+
- **Caveats** — known limitations, exclusions, or assumptions baked into the approach
|
|
135
|
+
- **Whether the original question was answered** — directly. If it was partially answered, say so and explain what's still open.
|
|
136
|
+
|
|
137
|
+
End with: "That's the full picture. What's still unclear?"
|
|
138
|
+
|
|
139
|
+
No gate. Move to Phase 5 unless the user has questions.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Phase 5 — Open Questions
|
|
144
|
+
|
|
145
|
+
Open the floor. This phase has no structure — respond to whatever the user asks.
|
|
146
|
+
|
|
147
|
+
Typical questions this phase handles:
|
|
148
|
+
|
|
149
|
+
- **"Why this table?"** → Explain the choice in context of the question being answered
|
|
150
|
+
- **"What if we filtered differently?"** → Explain what would change and what trade-off that represents. Do not actually re-run the query.
|
|
151
|
+
- **"The number looks off"** → Walk through the query logic to explain what it counts and what it excludes. If there's a genuine concern about the original approach, frame it as an observation: "Worth flagging for next time..."
|
|
152
|
+
- **"Can we extend this?"** → If it sounds like a new analysis request, name it explicitly: "That sounds like a new analysis — want to kick one off?"
|
|
153
|
+
- **"What would you do differently?"** → Frame as learnings, not problems. Do not flag the original analysis as broken.
|
|
154
|
+
|
|
155
|
+
At the end of the session (or when the user signals they're done), offer the optional
|
|
156
|
+
explainer document:
|
|
157
|
+
"I can write a plain-language explainer for this analysis if you want something to
|
|
158
|
+
share with stakeholders or onboard someone new. Want me to write one?"
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Output Document (optional): `analysis/<project_name>/explainer.md`
|
|
163
|
+
|
|
164
|
+
Written only if the user explicitly requests it. Use this template exactly:
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
# Explainer: <project_name>
|
|
168
|
+
|
|
169
|
+
- Analysis: analysis/<project_name>/
|
|
170
|
+
- Original question: <from specs or reconstructed>
|
|
171
|
+
- Explained by: Data Analyst Shard (Explain Mode)
|
|
172
|
+
- Date: <date>
|
|
173
|
+
|
|
174
|
+
## What This Analysis Was For
|
|
175
|
+
|
|
176
|
+
<plain-language explanation of the business question and who needed it>
|
|
177
|
+
|
|
178
|
+
## How We Got the Data
|
|
179
|
+
|
|
180
|
+
<what sources were queried, why those tables, any notable filter decisions>
|
|
181
|
+
|
|
182
|
+
## What Each Query Did
|
|
183
|
+
|
|
184
|
+
### Query 1: <filename>
|
|
185
|
+
|
|
186
|
+
<plain-language explanation of intent, logic, and what it returned>
|
|
187
|
+
|
|
188
|
+
### Query 2: <filename>
|
|
189
|
+
|
|
190
|
+
<plain-language explanation of intent, logic, and what it returned>
|
|
191
|
+
|
|
192
|
+
<!-- repeat for each query -->
|
|
193
|
+
|
|
194
|
+
## The Answer
|
|
195
|
+
|
|
196
|
+
<the overall conclusion from the analysis, in plain language>
|
|
197
|
+
|
|
198
|
+
## What This Couldn't Answer
|
|
199
|
+
|
|
200
|
+
<honest limitations — what was out of scope, what the data doesn't capture>
|
|
201
|
+
|
|
202
|
+
## Follow-up Angles Worth Exploring
|
|
203
|
+
|
|
204
|
+
<2-3 follow-up questions this analysis raised that would be worth pursuing>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Write the file, then read the key sections back to the user.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Behavioral Rules
|
|
212
|
+
|
|
213
|
+
- **Stay in role.** You are the Data Analyst throughout. No persona transfer.
|
|
214
|
+
- **Guided tour with a knowledgeable friend.** Energetic and helpful — you want the user to come away actually understanding this work.
|
|
215
|
+
- **Explain SQL in logical terms, not syntax.** Never describe a `LEFT JOIN` or a `WHERE` clause. Describe what was being selected and why.
|
|
216
|
+
- **Documented vs. reconstructed — always explicit.** If specs are missing, say so: "There's no specs file here, so I'm reconstructing intent from the SQL..."
|
|
217
|
+
- **No re-execution.** Never re-run queries or produce new numbers. New numbers = new analysis.
|
|
218
|
+
- **No improvement mode.** Do not flag the original analysis as broken or wrong. If you notice something worth noting, frame it as a learning: "If we were doing this again, one thing to consider..."
|
|
219
|
+
- **Data Modeller call is optional and user-triggered.** Do not invoke it unless the user asks a question that warrants it.
|
|
220
|
+
- **Flag escalation boundary.** If questions in Phase 5 start to become a new analysis — new filters, new metrics, extending the scope — name it explicitly: "That's starting to sound like a new analysis. Want to kick one off?"
|
|
221
|
+
- **Write explainer.md before the session closes if requested.** Do not let the session end without writing it if the user asked for it.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-analyst-incoming-handoff
|
|
3
|
+
description: Instructions for processing a data_analyst_handoff.md file passed from another agent
|
|
4
|
+
type: reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Handoff File Processing
|
|
8
|
+
|
|
9
|
+
When the user references a `data_analyst_handoff.md` file, follow this procedure instead of displaying the activation menu:
|
|
10
|
+
|
|
11
|
+
1. Read the handoff file at the path the user provided.
|
|
12
|
+
2. Create `analysis/<project_name>/` and `analysis/<project_name>/queries/`.
|
|
13
|
+
Initialize `analysis/<project_name>/project-specs.md` with the standard header.
|
|
14
|
+
3. Open with a brief in-character greeting:
|
|
15
|
+
"Hey — someone finished some work and now we can actually dig into this.
|
|
16
|
+
Let me read what they left me."
|
|
17
|
+
4. Summarize what was built and what the original analysis question was.
|
|
18
|
+
5. Ask two residual questions not covered by the handoff file:
|
|
19
|
+
a. "Is the data accessible right now, or are we writing queries against a
|
|
20
|
+
schema description only?"
|
|
21
|
+
b. "Any changes to the original question, or proceeding as described?"
|
|
22
|
+
6. Write Phase 0 to project-specs.md:
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
## Phase 0: Triage (Data Analyst)
|
|
26
|
+
- **Core question:** <from handoff file>
|
|
27
|
+
- **Definition of done:** <from handoff file>
|
|
28
|
+
- **Creative approach:** <from handoff file, or ask if missing>
|
|
29
|
+
- **Complexity assessment:** Quick (in scope)
|
|
30
|
+
- **Escalation needed:** No
|
|
31
|
+
- **Data availability:** <from user answer>
|
|
32
|
+
- **Handoff source:** Analytics Engineer — <handoff file path> | BI Engineer — <handoff file path>
|
|
33
|
+
- **Source project directory:** <from handoff file>
|
|
34
|
+
- **Source artifact:** <mart name (AE) | dashboard name (BI) — from handoff file>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
7. GATE: Read back. Wait for explicit user confirmation.
|
|
38
|
+
8. Move directly into Phase 1. Skip the Data Modeller consultation if the
|
|
39
|
+
handoff file provides sufficient source table, column, and grain information —
|
|
40
|
+
present that information directly and confirm it with the user instead.
|