photon-skills 3.0.3.dev17__tar.gz → 3.0.4.dev0__tar.gz
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.
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/CHANGELOG.md +14 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/PKG-INFO +1 -1
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/self-repair.md +6 -2
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/pyproject.toml +1 -1
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/health.py +52 -13
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/plugin.yaml +1 -1
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/SKILL.md +6 -2
- photon_skills-3.0.4.dev0/src/photon/skills/photon-debate-coach/templates/evidence-sheet.md +73 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/tests/test_health.py +36 -1
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/.github/workflows/plugin-contract.yml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/.github/workflows/publish.yml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/.gitignore +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/AGENTS.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/CONTRIBUTING.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/LICENSE +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/README.en.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/SECURITY.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/__init__.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/__main__.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/decision_contract.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/evidence_contract.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/findings_schema.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/gate_runner.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/semantic_sim.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/status_contract.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/_shared/visual_qa.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/logo.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/research-workflow.en.svg +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/research-workflow.zh.svg +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/social-preview.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/wechat-donation.jpg +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/assets/wechat-official-account.jpg +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/compatibility/agent-client-compatibility.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/_shared.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/citation.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/consistency.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/data-engineering.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/experiment-coding.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/figure.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/file-reading.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/frontend-design.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/idea-critique.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/idea-generation.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/literature-search.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/memory-pm.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/orchestrator.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/paper-writing.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/patent-disclosure.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/project-structure.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/research-ethics.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/research-plan.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/result-analysis.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/review-rebuttal.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/software-copyright.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/system-design.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/typesetting.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/venue-matching.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/consistency-round2-e2e.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/debate-coach.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/git-persistence.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/legacy-parity.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/orchestrator-spec.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/plugin-distribution.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/safety-privacy.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/student-skill-audit.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/citation-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/data-engineering-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/experiment-coding-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/ip-extension-gate.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/orchestrator-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/paper-writing-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/project-structure-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/research-ethics-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/research-plan-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/result-analysis-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/review-rebuttal-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/round3-release-gate.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/system-design-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/typesetting-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/e2e/venue-matching-round2.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/learning/ip/ip-upgrade-synthesis.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/learning/ip/patent-deep-read-report.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/learning/ip/software-copyright-deep-read-report.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/legacy-multi-client.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/releases/v1.0.0.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/.gitignore +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/.photon-project +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/decisions.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/mentor-feedback/2026-08-01.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/mentor-feedback/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/project-card.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/session-log/2026-07-28.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/session-log/2026-07-30.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/session-log/2026-08-01.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/source-log.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/task-log.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/artifacts/photon_e2e_case.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/data/synthetic_experiment.csv +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_a_design_frontier.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_b_signal_screen.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_c_calibration.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_d_evidence_strength.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_e_failure_map.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_f_quality_trajectory.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_g_distribution_shift.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_h_tradeoff_curve.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/panels/panel_i_risk_budget.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/figures/research_figure_gallery.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/scripts/compose_figure_gallery.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/scripts/generate_synthetic_data.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/scripts/python_gallery_panels.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/scripts/r_gallery_panels.R +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/e2e-research-demo/scripts/run_demo.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/data/fitted_rate_constants.csv +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/data/synthetic_design_table.csv +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/data/synthetic_uvvis_timeseries.csv +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/figures/figure1_kinetics.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/figures/figure2_response_surface.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/figures/figure3_diagnostics.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/figures/figure4_scavenger_effects.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/outputs/analysis_summary.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/outputs/scavenger_summary.csv +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/paper/main-preview.png +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/paper/main.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/paper/main.pdf +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/paper/main.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/analyze.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/build_paper.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/generate_data.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/make_figures.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/render_preview.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/projects/photocatalytic-dye-kinetics-study/scripts/run_all.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/scripts/check_plugin_contract.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/scripts/release.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/README.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/citation-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/references/locator_audit.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/references/registry_contract.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/templates/citation-four-gate.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/templates/citation_input.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-citation/templates/claim_citation_review.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-consistency/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-consistency/examples/fact-bindings.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-consistency/examples/materials_paper.txt +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-consistency/examples/materials_ppt.txt +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-consistency/references/consistency-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/examples/derive_spec.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/examples/rules.example.yaml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/examples/worked_example.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/references/data-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/templates/annotation_guide.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-data-engineering/templates/data-identity-fitness.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/references/code_examples.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/references/debug_protocol.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/references/experiment-coding-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/references/tdd_redflags.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/references/tools.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/templates/experiment-execution-contract.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/templates/run_manifest.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-experiment-coding/templates/run_manifest.template.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/bad_figure_example.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/example_framework.dot +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/example_framework_render.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/example_matplotlib_multipanel.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/example_seaborn_stats.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/examples/worked_example.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/references/figure_integrity.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/templates/figure-delivery.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/templates/figure_plan_card.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-figure/templates/table_plan_card.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/DOCX-REF.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/IMG-REF.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/PDF-REF.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/PPTX-REF.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/XLSX-REF.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/reading-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-file-reading/references/tools.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/design-systems-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/ecosystem-2026.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/fonts-and-colors.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/redesign-audit.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references/visual-a11y-rules.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-frontend-design/templates/frontend-delivery.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/critique-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/examples/worked_example_dermoscopy.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/references/contract.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/references/protocol.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/references/rubric.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/templates/Revision_Roadmap.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/templates/novelty-evidence.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-critique/templates/verdict_template.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/.gitignore +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/examples/candidates.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/examples/idea_candidates.example.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/idea-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/templates/idea-gap-evidence.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/templates/idea-genealogy.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/templates/idea_card.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-idea-generation/templates/innovation-engine.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/examples/goat_littable.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/examples/goat_search.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/examples/worked_example_dairy_goat.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/search-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-literature-search/templates/search-protocol.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-memory-pm/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-memory-pm/references/cross_harness_resume.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-memory-pm/references/session_handoff.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/examples/claim_evidence_walkthrough.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/paper-writing-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/argument_review.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/claim_argument_plan.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/guideline_map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/integrity_gate.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/mandatory_inclusions.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/references/self_review_checklist.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/templates/01_imrad.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/templates/06_conference.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/templates/argument-outline.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/templates/claim_argument_plan.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-paper-writing/templates/claim_passport.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-patent-disclosure/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-patent-disclosure/references/patent-interview-and-search.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-patent-disclosure/references/patent-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-patent-disclosure/templates/patent-disclosure-packet.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-project-structure/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-project-structure/references/project-lifecycle-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-project-structure/references/structure-profiles.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-project-structure/templates/project-policy.template.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-project-structure/templates/project-structure-governance.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/references/cn_compliance.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/references/decision_trees.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/references/ethics-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/references/retraction_flag_types.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-ethics/references/tortured_phrases.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/references/integration-contract.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/references/orchestrator-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/references/passport.schema.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/templates/passport.v3.yaml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/templates/task-profile.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-orchestrator/templates/workflow-ledger.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/examples/plan_spec.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/references/research-plan-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/experiment_matrix.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/failure-tree.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/plan_package.manifest.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/preregistration.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/reproducibility-checklist.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/reproduction-log.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/research-plan.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-research-plan/templates/target-chain.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/examples/analysis_audit.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/examples/method_compatibility.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/examples/stat_spec.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/examples/worked_example.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/result-analysis-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/scripts/r_analysis_crosscheck.R +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-result-analysis/templates/result-card.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/agents/openai.yaml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/references/workflow_contract.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/review-rebuttal-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/commitment_ledger.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/experiment_request.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/rereview_checklist.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/response_letter_template.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/response_matrix.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/review-response-contract.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-review-rebuttal/templates/review_input.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-software-copyright/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-software-copyright/references/materials-workflow.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-software-copyright/references/software-copyright-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-software-copyright/templates/software-copyright-materials.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/references/system-design-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/architecture-package.template.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/decision-authorization.template.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/design-readiness.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/migration_expand_contract.sql +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/openapi.yaml +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/rls_policy.sql +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/schema.sql +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-system-design/templates/system-intake.template.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/references/build_contract.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/references/latex_errors.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/acm_sigconf.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/ctex_chinese.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/elsevier_elsarticle.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/ieee_bare_conf.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/springer_llncs.tex +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/submission-readiness.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/templates/typesetting_input.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-typesetting/typesetting-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/references/workflow_contract.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/references.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/templates/query-privacy.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/templates/user_selection.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/templates/venue-evidence.example.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/templates/venue_compare_table.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/templates/venue_input.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/skills-academic/photon-venue-matching/venue-resource-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/SOUL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/__init__.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/_base.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/extensions/academic-skills.zip +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-brainstorm/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/references/format-presets.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/case-map.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/format.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/motion-brief.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/outline.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/post-match.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-debate-coach/templates/rebuttal-cards.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-method-planner/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-orchestrator/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-pitch-coach/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-pitch-coach/templates/judge-qa-prep.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-pitch-coach/templates/pitch-deck-outline.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-pitch-coach/templates/pitch-script-60s.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-progress-tracker/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-session/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skills/photon-source-filter/SKILL.md +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/skillsets.json +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/src/photon/workspace.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/tests/test_cli.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/tests/test_contract.py +0 -0
- {photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/tests/test_workspace.py +0 -0
|
@@ -6,6 +6,8 @@ The project follows a pragmatic release-note style rather than claiming strict s
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [3.0.3] - 2026-10-30
|
|
10
|
+
|
|
9
11
|
### Added
|
|
10
12
|
|
|
11
13
|
- **`doctor`, `repair`, `feedback export` (P3).** `doctor` checks the bundled
|
|
@@ -19,6 +21,18 @@ The project follows a pragmatic release-note style rather than claiming strict s
|
|
|
19
21
|
limits: `docs/design/self-repair.md`; `photon-orchestrator` now points at the
|
|
20
22
|
three commands when a skill misfires.
|
|
21
23
|
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **`doctor` explains drift instead of calling everything an edit.** A copy that
|
|
27
|
+
differs from the bundle now reports `N changed / N extra / N missing` with an
|
|
28
|
+
example path, so a template a student added reads as `1 extra` rather than as
|
|
29
|
+
an edited skill. `repair` also drops profiles from the install state whose home
|
|
30
|
+
is gone, which used to raise a permanent harmless warning.
|
|
31
|
+
- **`photon-debate-coach` ships an evidence sheet** (`templates/evidence-sheet.md`);
|
|
32
|
+
Stage A now produces `debate-prep/evidence-sheet.md` when a case rests on
|
|
33
|
+
numbers — original source, quotable line, denominator, what the evidence does
|
|
34
|
+
*not* prove, and a 待核查 column that never goes on stage.
|
|
35
|
+
|
|
22
36
|
### Documentation
|
|
23
37
|
|
|
24
38
|
- **README rewritten as a plugin-first guide** (zh + en): the two real install
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: photon-skills
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.4.dev0
|
|
4
4
|
Summary: Photon — STEAM research, debate, and pitch competition companion for primary/secondary students
|
|
5
5
|
Author-email: Uniterra Solutions Limited <harryw07801@uniterra-solutions.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -39,7 +39,7 @@ state file. `feedback export` only writes the output directory you give it.
|
|
|
39
39
|
| `bundled skills` | the plugin dir has skills, and each has `SKILL.md` | error |
|
|
40
40
|
| `profile` | the active profile's home exists | error |
|
|
41
41
|
| `skills dir` | `<profile>/skills` exists | error |
|
|
42
|
-
| `skill sync` | bundled skill missing /
|
|
42
|
+
| `skill sync` | bundled skill missing; a copy that differs from the bundle (per-file `N changed / N extra / N missing`, with an example path); untracked by the manifest; all in sync | error / warn / ok |
|
|
43
43
|
| `manifest` | stale entries pointing at removed skills | warn |
|
|
44
44
|
| `manifest version` | manifest records an older plugin version | warn |
|
|
45
45
|
| `extension` | installed payload missing, payload hash changed, extension skills missing; or none installed | warn / ok |
|
|
@@ -52,7 +52,8 @@ state file. `feedback export` only writes the output directory you give it.
|
|
|
52
52
|
|
|
53
53
|
Local edits are detected by comparing the copy with the **bundle**, not with the
|
|
54
54
|
last recorded hash: adopting an edit as the new baseline (which `sync` does) must
|
|
55
|
-
not make the divergence invisible.
|
|
55
|
+
not make the divergence invisible. The comparison is per file, so an added
|
|
56
|
+
template reads as `1 extra`, not as an edit of the whole skill.
|
|
56
57
|
|
|
57
58
|
## What `repair` does
|
|
58
59
|
|
|
@@ -60,6 +61,9 @@ not make the divergence invisible.
|
|
|
60
61
|
|---|---|---|
|
|
61
62
|
| bundled skill missing | copy it from the bundle, record its hash | same |
|
|
62
63
|
| skill edited locally | keep the edit, update the baseline hash | restore the bundled copy (destructive) |
|
|
64
|
+
| extra file added to a skill copy | keep it | delete it (the copy is restored from the bundle) |
|
|
65
|
+
| file deleted from a skill copy | restored on the next `setup`; `repair` reports it | restored from the bundle |
|
|
66
|
+
| state lists a profile that is not on disk | drop it from the state | same |
|
|
63
67
|
| skill present but untracked | adopt it only when byte-identical to the bundle | same |
|
|
64
68
|
| stale manifest entry (skill no longer bundled) | drop the entry | same |
|
|
65
69
|
| stale `skillset` key in state | drop it | same |
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "photon-skills"
|
|
7
|
-
version = "3.0.
|
|
7
|
+
version = "3.0.4.dev0"
|
|
8
8
|
description = "Photon — STEAM research, debate, and pitch competition companion for primary/secondary students"
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "Uniterra Solutions Limited", email = "harryw07801@uniterra-solutions.com" },
|
|
@@ -21,6 +21,7 @@ talks to the network, and never deletes a student's project data.
|
|
|
21
21
|
from __future__ import annotations
|
|
22
22
|
|
|
23
23
|
import difflib
|
|
24
|
+
import hashlib
|
|
24
25
|
import json
|
|
25
26
|
import shutil
|
|
26
27
|
import subprocess
|
|
@@ -67,13 +68,29 @@ def _hash(path: Path) -> str:
|
|
|
67
68
|
|
|
68
69
|
|
|
69
70
|
def _file_sha(path: Path) -> str:
|
|
70
|
-
import hashlib
|
|
71
|
-
|
|
72
71
|
digest = hashlib.sha256()
|
|
73
72
|
digest.update(path.read_bytes())
|
|
74
73
|
return digest.hexdigest()
|
|
75
74
|
|
|
76
75
|
|
|
76
|
+
def _tree_files(root: Path) -> dict[str, str]:
|
|
77
|
+
"""Relative path → sha256 for every file under ``root``."""
|
|
78
|
+
out: dict[str, str] = {}
|
|
79
|
+
for path in root.rglob("*"):
|
|
80
|
+
if path.is_file():
|
|
81
|
+
out[path.relative_to(root).as_posix()] = _file_sha(path)
|
|
82
|
+
return out
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _tree_diff(bundle: Path, installed: Path) -> tuple[list[str], list[str], list[str]]:
|
|
86
|
+
"""``(added, removed, changed)`` relative paths, comparing copy to bundle."""
|
|
87
|
+
a, b = _tree_files(bundle), _tree_files(installed)
|
|
88
|
+
added = sorted(set(b) - set(a))
|
|
89
|
+
removed = sorted(set(a) - set(b))
|
|
90
|
+
changed = sorted(k for k in set(a) & set(b) if a[k] != b[k])
|
|
91
|
+
return added, removed, changed
|
|
92
|
+
|
|
93
|
+
|
|
77
94
|
def _bundled(skills_dir: Path) -> dict[str, Path]:
|
|
78
95
|
return {d.name: d for d in bundled_skill_dirs(skills_dir)}
|
|
79
96
|
|
|
@@ -135,19 +152,32 @@ def run_doctor(
|
|
|
135
152
|
f"{len(missing)} bundled skill(s) missing: {', '.join(sorted(missing))}",
|
|
136
153
|
f"hermes {PLUGIN_NAME} repair",
|
|
137
154
|
)
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
155
|
+
drift: dict[str, tuple[list[str], list[str], list[str]]] = {}
|
|
156
|
+
for name in bundled:
|
|
157
|
+
target = profile_skills / name
|
|
158
|
+
if not target.exists():
|
|
159
|
+
continue
|
|
160
|
+
added, removed, changed = _tree_diff(bundled[name], target)
|
|
161
|
+
if added or removed or changed:
|
|
162
|
+
drift[name] = (added, removed, changed)
|
|
163
|
+
if drift:
|
|
164
|
+
parts: list[str] = []
|
|
165
|
+
for name, (added, removed, changed) in sorted(drift.items()):
|
|
166
|
+
counts: list[str] = []
|
|
167
|
+
if changed:
|
|
168
|
+
counts.append(f"{len(changed)} changed")
|
|
169
|
+
if added:
|
|
170
|
+
counts.append(f"{len(added)} extra")
|
|
171
|
+
if removed:
|
|
172
|
+
counts.append(f"{len(removed)} missing")
|
|
173
|
+
sample = (changed or added or removed)[0]
|
|
174
|
+
parts.append(f"{name} ({', '.join(counts)}; e.g. {sample})")
|
|
145
175
|
add(
|
|
146
176
|
"skill sync",
|
|
147
177
|
"warn",
|
|
148
|
-
f"{len(
|
|
149
|
-
|
|
150
|
-
|
|
178
|
+
f"{len(drift)} skill(s) differ from the shipped copy: " + "; ".join(parts),
|
|
179
|
+
f"hermes {PLUGIN_NAME} repair --force "
|
|
180
|
+
"(restores the shipped copy; extra files are deleted)",
|
|
151
181
|
)
|
|
152
182
|
untracked = [
|
|
153
183
|
n for n in bundled if (profile_skills / n).exists() and n not in recorded
|
|
@@ -171,7 +201,7 @@ def run_doctor(
|
|
|
171
201
|
+ ", ".join(sorted(orphans)),
|
|
172
202
|
f"hermes {PLUGIN_NAME} repair",
|
|
173
203
|
)
|
|
174
|
-
if not missing and not
|
|
204
|
+
if not missing and not drift and not untracked and not orphans:
|
|
175
205
|
add("skill sync", "ok", f"{len(bundled)} skill(s) in sync with the bundle")
|
|
176
206
|
|
|
177
207
|
if manifest.get("version") and manifest["version"] != version:
|
|
@@ -401,6 +431,15 @@ def run_repair(
|
|
|
401
431
|
state.pop("skillset", None)
|
|
402
432
|
actions.append("removed the stale 'skillset' key from the install state")
|
|
403
433
|
|
|
434
|
+
profiles_state = state.get("profiles")
|
|
435
|
+
if isinstance(profiles_state, dict):
|
|
436
|
+
for name in sorted(profiles_state):
|
|
437
|
+
if not _profile_dir(hermes_home, name).exists():
|
|
438
|
+
profiles_state.pop(name, None)
|
|
439
|
+
actions.append(
|
|
440
|
+
f"dropped profile '{name}' from the install state (not on disk)"
|
|
441
|
+
)
|
|
442
|
+
|
|
404
443
|
return {"profile": profile_name, "actions": actions}
|
|
405
444
|
|
|
406
445
|
|
|
@@ -65,9 +65,12 @@ metadata:
|
|
|
65
65
|
4. **預期反對 2-3 個**:每個附一條回應線,並標明它攻擊的是對方哪個假設。
|
|
66
66
|
5. **講稿/大綱**:用學生自己的稿來拋光——口語化、句子短、一段一個重點。
|
|
67
67
|
不要換掉學生的語氣,不要代寫成「AI 腔」。
|
|
68
|
+
6. **證據表(需要引用具體數字/法規時)**:每條證據寫清「原始出處、可引原句、
|
|
69
|
+
分母、它不證明什麼」,未核實的放進「待核查」欄,不准上台講。用
|
|
70
|
+
`templates/evidence-sheet.md`。
|
|
68
71
|
|
|
69
72
|
產出:`debate-prep/motion-brief.md`、`debate-prep/case-map.md`、`debate-prep/outline.md`
|
|
70
|
-
(用 `templates/` 的範本)
|
|
73
|
+
(用 `templates/` 的範本);有具體數據時另加 `debate-prep/evidence-sheet.md`。
|
|
71
74
|
|
|
72
75
|
### Stage B — 對方發言後 / After an opposing speech (或研討會現場提問後)
|
|
73
76
|
|
|
@@ -167,6 +170,7 @@ metadata:
|
|
|
167
170
|
- `references/format-presets.md` — 已核實的香港/國際賽制 preset(附來源連結與
|
|
168
171
|
`待核查` 標記);實作與回答賽制問題前先讀這一份。
|
|
169
172
|
- `templates/motion-brief.md`、`templates/case-map.md`、`templates/rebuttal-cards.md`、
|
|
170
|
-
`templates/outline.md`、`templates/post-match.md`、`templates/format.md
|
|
173
|
+
`templates/outline.md`、`templates/post-match.md`、`templates/format.md`、
|
|
174
|
+
`templates/evidence-sheet.md`
|
|
171
175
|
— `debate-prep/` 的檔案範本。
|
|
172
176
|
- `docs/design/debate-coach.md`(repo)— 設計決策與已核實賽制資料。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Evidence Sheet — 證據表
|
|
2
|
+
|
|
3
|
+
> 範本。複製到 `debate-prep/evidence-sheet.md` 再填。
|
|
4
|
+
> 上限:______ 條(照賽制/課程要求;寧願少而實,唔好為湊數加未核實的來源)。
|
|
5
|
+
> 每條都要能在 **30 秒內**回答 source challenge。
|
|
6
|
+
|
|
7
|
+
## 一條好證據的四個條件
|
|
8
|
+
|
|
9
|
+
1. **原始出處**:法規、監管機構、專業學會、同儕評審期刊、官方統計。二手轉述不算。
|
|
10
|
+
2. **引得出原句**:你講得出「它確實寫了這一句」,而不是「我記得好像有」。
|
|
11
|
+
3. **知分母**:比率講清「per 咩」;人數講清「邊個人口」。
|
|
12
|
+
4. **知它不證明什麼**:寫在「不要說」一欄——這一欄比正文更防失分。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 索引
|
|
17
|
+
|
|
18
|
+
| # | 一句話事實 | 出處 | 支撐 | 狀態 |
|
|
19
|
+
|---|-----------|------|------|------|
|
|
20
|
+
| E1 | | | | ✅ / ⚠️ |
|
|
21
|
+
| E2 | | | | |
|
|
22
|
+
| E3 | | | | |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 每條的格式(逐條重複)
|
|
27
|
+
|
|
28
|
+
### E__ · 短標題
|
|
29
|
+
|
|
30
|
+
**Speakable claim(一句話,講得出):**
|
|
31
|
+
> ...
|
|
32
|
+
|
|
33
|
+
**精確內容(數字 + 分母 + 範圍):**
|
|
34
|
+
- ...
|
|
35
|
+
|
|
36
|
+
**出處:**
|
|
37
|
+
- 作者/機構、年份、標題、URL
|
|
38
|
+
- 查閱日期:YYYY-MM-DD
|
|
39
|
+
|
|
40
|
+
**狀態:** ✅ 已核實(讀過原始出處)/ ⚠️ 待核查(唔可以當證據)/ 🧪 假設例子(要明講)
|
|
41
|
+
|
|
42
|
+
**用在哪裏:** 哪個論點、哪一段發言
|
|
43
|
+
|
|
44
|
+
**30 秒 source challenge 防守:**
|
|
45
|
+
> "That's [機構], [年份], [文件名]. It says [exact claim]. Note the denominator: [ ]."
|
|
46
|
+
|
|
47
|
+
**不要說:** 常見誇大或錯誤講法(寫出來,提醒自己)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 論點 ↔ 證據對應
|
|
52
|
+
|
|
53
|
+
| 論點 | 主要證據 | 備用 |
|
|
54
|
+
|------|----------|------|
|
|
55
|
+
| A1 | | |
|
|
56
|
+
| A2 | | |
|
|
57
|
+
| A3 | | |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## ⚠️ 待核查 — 唔好上台講
|
|
62
|
+
|
|
63
|
+
| 講法 | 問題 |
|
|
64
|
+
|------|------|
|
|
65
|
+
| | |
|
|
66
|
+
|
|
67
|
+
> 這一欄要當成護欄:未核實的數字寫進正文,比賽時一定會被追問。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 備用來源(唔計入上限)
|
|
72
|
+
|
|
73
|
+
- 只用於開場講 stakes、或回答提問;同樣要標狀態。
|
|
@@ -86,7 +86,10 @@ def test_edited_skill_is_kept_unless_forced(install):
|
|
|
86
86
|
target.write_text("---\nname: photon-alpha\n---\n\nlocal edit\n", encoding="utf-8")
|
|
87
87
|
|
|
88
88
|
findings = doctor(install)
|
|
89
|
-
assert any(
|
|
89
|
+
assert any(
|
|
90
|
+
"differ from the shipped copy" in f.message and "1 changed" in f.message
|
|
91
|
+
for f in findings
|
|
92
|
+
)
|
|
90
93
|
|
|
91
94
|
repair(install)
|
|
92
95
|
assert "local edit" in target.read_text(encoding="utf-8")
|
|
@@ -167,6 +170,38 @@ def test_feedback_export_writes_diff_and_evidence(install, tmp_path):
|
|
|
167
170
|
assert manifest["changed_skills"] == ["photon-alpha"]
|
|
168
171
|
|
|
169
172
|
|
|
173
|
+
def test_extra_and_missing_files_are_reported(install):
|
|
174
|
+
home, _plugin_dir, _skills = install
|
|
175
|
+
skill = home / "skills" / "photon-alpha"
|
|
176
|
+
(skill / "extra.md").write_text("local only\n", encoding="utf-8")
|
|
177
|
+
(skill / "SKILL.md").unlink()
|
|
178
|
+
|
|
179
|
+
findings = doctor(install)
|
|
180
|
+
warn = next(f for f in findings if f.check == "skill sync" and f.status == "warn")
|
|
181
|
+
assert "1 extra" in warn.message
|
|
182
|
+
assert "1 missing" in warn.message
|
|
183
|
+
assert "extra.md" in warn.message
|
|
184
|
+
|
|
185
|
+
repair(install)
|
|
186
|
+
assert (skill / "extra.md").exists()
|
|
187
|
+
|
|
188
|
+
repair(install, force=True)
|
|
189
|
+
assert not (skill / "extra.md").exists()
|
|
190
|
+
assert (skill / "SKILL.md").exists()
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def test_repair_prunes_missing_profiles(install):
|
|
194
|
+
home, _plugin_dir, _skills = install
|
|
195
|
+
state = {"profiles": {"default": {}, "ghost": {}}}
|
|
196
|
+
|
|
197
|
+
findings = doctor(install, state=state)
|
|
198
|
+
assert any("ghost" in f.message for f in findings)
|
|
199
|
+
|
|
200
|
+
repair(install, state=state)
|
|
201
|
+
assert "ghost" not in state["profiles"]
|
|
202
|
+
assert "default" in state["profiles"]
|
|
203
|
+
|
|
204
|
+
|
|
170
205
|
def test_cli_exposes_health_commands():
|
|
171
206
|
parser = argparse.ArgumentParser()
|
|
172
207
|
subs = parser.add_subparsers(dest="cmd")
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/.github/workflows/plugin-contract.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/experiment-coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/literature-search.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/patent-disclosure.md
RENAMED
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/project-structure.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/competitors/software-copyright.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/design/consistency-round2-e2e.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/learning/ip/ip-upgrade-synthesis.md
RENAMED
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/docs/learning/ip/patent-deep-read-report.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/.gitignore
RENAMED
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/.photon-project
RENAMED
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/decisions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/project-card.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/source-log.md
RENAMED
|
File without changes
|
{photon_skills-3.0.3.dev17 → photon_skills-3.0.4.dev0}/examples/demo-student-project/task-log.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|