claude-dev-env 2.16.0 → 2.17.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/.agents/agents/AGENTS.md +6 -0
- package/.agents/skills/AGENTS.md +34 -35
- package/.agents/skills/_shared/pr-loop/AGENTS.md +22 -15
- package/.agents/skills/_shared/pr-loop/portable-driver.md +6 -7
- package/.agents/skills/_shared/pr-loop/prompts/AGENTS.md +2 -2
- package/.agents/skills/_shared/pr-loop/scripts/AGENTS.md +1 -1
- package/.agents/skills/_shared/pr-loop/scripts/portable_converge_driver.py +25 -16
- package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +1 -5
- package/.agents/skills/autoconverge/reference/convergence-gates.md +31 -0
- package/.agents/skills/autoconverge/reference/convergence.md +8 -10
- package/.agents/skills/autoconverge/reference/gotchas.md +1 -1
- package/.agents/skills/autoconverge/reference/stop-conditions.md +1 -1
- package/.agents/skills/autoconverge/workflow/converge.codex-gate.test.mjs +1 -1
- package/.agents/skills/autoconverge/workflow/converge.contract.test.mjs +1 -1
- package/.agents/skills/autoconverge/workflow/converge.mjs +3 -3
- package/.agents/skills/cert-classification-rule/SKILL.md +224 -0
- package/.agents/skills/cert-classification-rule/scripts/resort_cert_folders.py +158 -0
- package/.agents/skills/eli5/SKILL.md +128 -0
- package/.agents/skills/eli5/reference/task-seeds.md +11 -0
- package/.agents/skills/fresh-branch/scripts/test_create_fresh_branch.py +2 -3
- package/.agents/skills/name-by-capability-audit/SKILL.md +67 -0
- package/.agents/skills/name-by-capability-audit/reference/fetch-commands.md +29 -0
- package/.agents/skills/name-by-capability-audit/reference/offense-examples.md +32 -0
- package/.agents/skills/name-by-capability-audit/reference/report-template.md +29 -0
- package/.agents/skills/name-by-capability-audit/reference/rule-checklist.md +38 -0
- package/.agents/skills/name-by-capability-audit/reference/task-seeds.md +9 -0
- package/.agents/skills/pr-cleanup/SKILL.md +99 -0
- package/.agents/skills/prototype/reference/honest-limitations.md +1 -1
- package/.agents/skills/prototype/reference/promotion-tasks.md +1 -1
- package/.agents/skills/prototype/scripts/test_build_sandbox_settings.py +2 -2
- package/.agents/skills/prototype/workflows/promotion.md +2 -2
- package/.agents/skills/review-router/SKILL.md +51 -0
- package/.agents/skills/review-router/reference/route-policy.json +7 -0
- package/.agents/skills/review-router/reference/task-seeds.md +1 -0
- package/.agents/skills/review-router/scripts/conftest.py +4 -0
- package/.agents/skills/review-router/scripts/review_router.py +50 -0
- package/.agents/skills/review-router/scripts/review_router_cli.py +211 -0
- package/.agents/skills/review-router/scripts/review_router_constants/__init__.py +1 -0
- package/.agents/skills/review-router/scripts/review_router_constants/config/__init__.py +0 -0
- package/.agents/skills/review-router/scripts/review_router_constants/config/constants.py +13 -0
- package/.agents/skills/review-router/scripts/test_review_router.py +23 -0
- package/.agents/skills/review-router/scripts/test_review_router_cli.py +47 -0
- package/.agents/skills/review-tier/SKILL.md +56 -0
- package/.agents/skills/review-tier/reference/task-seeds.md +1 -0
- package/.agents/skills/review-tier/reference/tier-policy.json +9 -0
- package/.agents/skills/review-tier/scripts/conftest.py +4 -0
- package/.agents/skills/review-tier/scripts/review_tier.py +332 -0
- package/.agents/skills/review-tier/scripts/review_tier_constants/__init__.py +1 -0
- package/.agents/skills/review-tier/scripts/review_tier_constants/config/__init__.py +0 -0
- package/.agents/skills/review-tier/scripts/review_tier_constants/config/constants.py +29 -0
- package/.agents/skills/review-tier/scripts/test_generation.py +171 -0
- package/.agents/skills/review-tier/scripts/test_review_tier.py +33 -0
- package/.agents/skills/session-log/SKILL.md +1 -1
- package/.agents/skills/shared-extraction-audit/SKILL.md +160 -0
- package/.agents/skills/shared-extraction-audit/reference/examples.md +46 -0
- package/.agents/skills/shared-extraction-audit/reference/offense-taxonomy.md +100 -0
- package/.agents/skills/source-command-logifix/SKILL.md +29 -0
- package/.agents/skills/source-command-sr-loop/SKILL.md +58 -0
- package/.agents/skills-archived/AGENTS.md +45 -0
- package/.agents/{skills → skills-archived}/anthropic-plan/AGENTS.md +1 -1
- package/.agents/{skills → skills-archived}/bugteam/scripts/reflow_skill_md.py +3 -3
- package/.agents/{skills → skills-archived}/codex-review/test_skill_scaffold.py +1 -1
- package/.agents/{skills → skills-archived}/copilot-finding-triage/SKILL.md +1 -1
- package/.agents/{skills → skills-archived}/pr-converge/SKILL.md +6 -6
- package/.agents/{skills → skills-archived}/pr-converge/pr_converge_skill_constants/AGENTS.md +1 -1
- package/.agents/{skills → skills-archived}/pr-converge/pr_converge_skill_constants/constants.py +1 -1
- package/.agents/{skills → skills-archived}/pr-converge/reference/multi-pr-orchestration.md +1 -1
- package/.agents/{skills → skills-archived}/pr-converge/reference/per-tick.md +3 -3
- package/.agents/{skills → skills-archived}/pr-converge/scripts/reflow_skill_md.py +2 -2
- package/.agents/{skills → skills-archived}/pr-converge/test_portable_pacer_gate.py +6 -2
- package/.agents/{skills → skills-archived}/pr-converge/workflows/schedule-wakeup-loop.md +1 -1
- package/.agents/{skills → skills-archived}/split-pr/reference/proposal-format.md +1 -1
- package/AGENTS.md +34 -58
- package/_shared/AGENTS.md +2 -0
- package/_shared/advisor/reference/sol-rung.md +2 -2
- package/_shared/advisor/reference/third-party-bind.md +1 -1
- package/_shared/pr-loop/audit-reply-template.md +4 -0
- package/_shared/pr-loop/fix-protocol.md +7 -6
- package/_shared/pr-loop/gh-payloads.md +8 -6
- package/_shared/pr-loop/precatch-rubric.md +6 -5
- package/_shared/pr-loop/scripts/AGENTS.md +15 -0
- package/_shared/pr-loop/scripts/_pr_converge_path_setup.py +38 -0
- package/_shared/pr-loop/scripts/check_bugbot_ci.py +279 -0
- package/_shared/pr-loop/scripts/check_convergence.py +923 -0
- package/_shared/pr-loop/scripts/check_convergence_availability.py +275 -0
- package/_shared/pr-loop/scripts/check_convergence_gates.py +279 -0
- package/_shared/pr-loop/scripts/check_convergence_thread_gates.py +219 -0
- package/_shared/pr-loop/scripts/check_pending_reviews.py +154 -0
- package/_shared/pr-loop/scripts/codex_down_classifier.py +98 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/.claude/CLAUDE.md +1 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/AGENTS.md +18 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/__init__.py +1 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/classifier_constants.py +35 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/codex_usage_probe_constants.py +82 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/findings_constants.py +18 -0
- package/_shared/pr-loop/scripts/codex_review_scripts_constants/run_constants.py +53 -0
- package/_shared/pr-loop/scripts/codex_usage_probe.py +570 -0
- package/_shared/pr-loop/scripts/conftest.py +43 -0
- package/_shared/pr-loop/scripts/fetch_copilot_reviews.py +134 -0
- package/_shared/pr-loop/scripts/fixtures/auth_failure_synthetic.txt +1 -0
- package/_shared/pr-loop/scripts/fixtures/config_load_failure_v0.125.0.txt +1 -0
- package/_shared/pr-loop/scripts/fixtures/freeform_findings_v0.144.3.txt +6 -0
- package/_shared/pr-loop/scripts/fixtures/model_rejection_v0.125.0.jsonl +5 -0
- package/_shared/pr-loop/scripts/fixtures/structured_findings.txt +13 -0
- package/_shared/pr-loop/scripts/fixtures/success_stream_v0.144.3.jsonl +6 -0
- package/_shared/pr-loop/scripts/fixtures/unknown_failure_synthetic.txt +1 -0
- package/_shared/pr-loop/scripts/fixtures/usage_limit_synthetic.txt +1 -0
- package/_shared/pr-loop/scripts/parse_codex_findings.py +207 -0
- package/_shared/pr-loop/scripts/post_fix_reply.py +168 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/.claude/CLAUDE.md +1 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/AGENTS.md +18 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/__init__.py +0 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +70 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/pr_converge_constants.py +118 -0
- package/_shared/pr-loop/scripts/pr_converge_scripts_constants/reflow_skill_md_constants.py +13 -0
- package/_shared/pr-loop/scripts/pr_converge_skill_constants/.claude/CLAUDE.md +1 -0
- package/_shared/pr-loop/scripts/pr_converge_skill_constants/AGENTS.md +26 -0
- package/_shared/pr-loop/scripts/pr_converge_skill_constants/__init__.py +0 -0
- package/_shared/pr-loop/scripts/pr_converge_skill_constants/constants.py +69 -0
- package/_shared/pr-loop/scripts/run_codex_review.py +609 -0
- package/_shared/pr-loop/scripts/test__pr_converge_path_setup.py +30 -0
- package/_shared/pr-loop/scripts/test_check_bugbot_ci.py +312 -0
- package/_shared/pr-loop/scripts/test_check_convergence.py +438 -0
- package/_shared/pr-loop/scripts/test_check_convergence_availability.py +391 -0
- package/_shared/pr-loop/scripts/test_check_convergence_codex.py +517 -0
- package/_shared/pr-loop/scripts/test_check_convergence_contract.py +400 -0
- package/_shared/pr-loop/scripts/test_check_convergence_fixture.py +179 -0
- package/_shared/pr-loop/scripts/test_check_convergence_gates.py +84 -0
- package/_shared/pr-loop/scripts/test_check_convergence_thread_gates.py +99 -0
- package/_shared/pr-loop/scripts/test_codex_down_classifier.py +143 -0
- package/_shared/pr-loop/scripts/test_codex_usage_probe.py +683 -0
- package/_shared/pr-loop/scripts/test_parse_codex_findings.py +130 -0
- package/_shared/pr-loop/scripts/test_run_codex_review.py +969 -0
- package/_shared/pr-loop/scripts/tests/test_claude_permissions_common.py +1 -1
- package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +1 -1
- package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +1 -1
- package/_shared/pr-loop/state-schema.md +20 -28
- package/_shared/process-tree/AGENTS.md +3 -3
- package/bin/ever-shipped-skills.mjs +29 -1
- package/bin/install-constants.mjs +15 -6
- package/bin/install.agents-home.test.mjs +13 -0
- package/bin/install.cursor-rules.test.mjs +3 -3
- package/bin/install.mjs +80 -20
- package/bin/install.profile-root.test.mjs +1 -1
- package/bin/install.prune.test.mjs +23 -204
- package/bin/install.test.mjs +8 -5
- package/bin/resolve-install-root.mjs +21 -0
- package/bin/resolve-package-managed-directory.mjs +4 -4
- package/commands/AGENTS.md +2 -0
- package/commands/sr-loop.md +3 -0
- package/docs/references/prose-style-enforcement.md +3 -7
- package/hooks/AGENTS.md +0 -3
- package/hooks/blocking/AGENTS.md +0 -2
- package/hooks/blocking/ask_user_question_shape_blocker.py +83 -0
- package/hooks/blocking/pre_tool_use_dispatcher.py +2 -19
- package/hooks/blocking/state_description_blocker.py +1 -1
- package/hooks/blocking/test_ask_user_question_shape.py +69 -0
- package/hooks/blocking/test_pre_tool_use_dispatcher.py +17 -58
- package/hooks/blocking/test_pre_tool_use_dispatcher_native.py +9 -104
- package/hooks/blocking/test_state_description_blocker.py +1 -0
- package/hooks/blocking/test_stop_dispatcher.py +1 -26
- package/hooks/hooks.json +1 -1
- package/hooks/hooks_constants/AGENTS.md +0 -3
- package/hooks/hooks_constants/ask_user_question_shape.py +1 -1
- package/hooks/hooks_constants/ask_user_question_shape_constants.py +73 -0
- package/hooks/hooks_constants/bot_mention_comment_blocker_constants.py +1 -2
- package/hooks/hooks_constants/code_rules_path_utils_constants.py +0 -1
- package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +0 -7
- package/hooks/hooks_constants/stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/test_ask_user_question_shape.py +1 -1
- package/hooks/hooks_constants/test_prose_metrics_parity.py +29 -107
- package/hooks/hooks_constants/test_stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/working_style_prompt_constants.py +9 -10
- package/hooks/session/AGENTS.md +4 -1
- package/hooks/session/test_working_style_prompt.py +8 -4
- package/hooks/session/working_style_prompt.py +4 -2
- package/package.json +1 -4
- package/rules/AGENTS.md +2 -5
- package/rules/asd-ste100-language.md +39 -0
- package/rules/ask-user-question-required.md +1 -1
- package/rules/long-horizon-autonomy.md +1 -1
- package/scripts/AGENTS.md +1 -0
- package/scripts/Show-Asset.ps1 +106 -0
- package/scripts/test_validate_instruction_pairs.py +30 -3
- package/scripts/tests/test_engine.py +4 -4
- package/scripts/tests/test_rules.py +5 -5
- package/system-prompts/AGENTS.md +8 -0
- package/system-prompts/software-engineer.xml +8 -3
- package/.agents/skills/grokify/evals/README.md +0 -72
- package/.agents/skills/grokify/evals/parse-payload.test.mjs +0 -171
- package/.agents/skills/grokify/evals/run-capability-evals.mjs +0 -545
- package/_shared/pr-loop/scripts/README.md +0 -21
- package/docs/imagegen.md +0 -22
- package/hooks/blocking/eli11_reply_enforcer.py +0 -436
- package/hooks/blocking/plain_language_blocker.py +0 -758
- package/hooks/blocking/test_eli11_reply_enforcer.py +0 -390
- package/hooks/blocking/test_plain_language_blocker.py +0 -683
- package/hooks/blocking/test_plain_language_blocker_allowlist.py +0 -228
- package/hooks/diagnostic/AGENTS.md +0 -75
- package/hooks/diagnostic/CLAUDE.md +0 -1
- package/hooks/diagnostic/hook_log_extractor.py +0 -875
- package/hooks/diagnostic/hook_log_init.py +0 -202
- package/hooks/diagnostic/hook_log_stop_wrapper.py +0 -26
- package/hooks/diagnostic/migrations/2026-04-25-drop-themes-hook-events.sql +0 -3
- package/hooks/diagnostic/migrations/AGENTS.md +0 -16
- package/hooks/diagnostic/migrations/CLAUDE.md +0 -1
- package/hooks/diagnostic/migrations/README.md +0 -76
- package/hooks/diagnostic/queries/AGENTS.md +0 -19
- package/hooks/diagnostic/queries/CLAUDE.md +0 -1
- package/hooks/diagnostic/queries/block_details_for_hook.sql +0 -26
- package/hooks/diagnostic/queries/blocks_by_category.sql +0 -10
- package/hooks/diagnostic/queries/blocks_by_tool.sql +0 -9
- package/hooks/diagnostic/queries/blocks_last_7_days.sql +0 -11
- package/hooks/diagnostic/queries/top_blockers_last_24_hours.sql +0 -12
- package/hooks/diagnostic/queries/top_blockers_overall.sql +0 -12
- package/hooks/diagnostic/requirements-hook-logs-dev.txt +0 -2
- package/hooks/diagnostic/requirements-hook-logs.txt +0 -1
- package/hooks/diagnostic/schema.sql +0 -51
- package/hooks/diagnostic/test_hook_log_extractor.py +0 -1518
- package/hooks/diagnostic/test_hook_log_init.py +0 -227
- package/hooks/diagnostic/test_hook_log_stop_wrapper.py +0 -17
- package/hooks/hooks_constants/eli11_reply_enforcer_constants.py +0 -94
- package/hooks/hooks_constants/hook_log_extractor_constants.py +0 -233
- package/hooks/hooks_constants/plain_language_blocker_constants.py +0 -366
- package/hooks/hooks_constants/test_hook_log_extractor_constants.py +0 -123
- package/rules/doc-prose-cuts.md +0 -58
- package/rules/eli11-replies.md +0 -36
- package/rules/opus5-communication-contract.md +0 -45
- package/rules/plain-language.md +0 -9
- /package/.agents/{skills → skills-archived}/anthropic-plan/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/validate_packet_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/test_validate_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/scripts/validate_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/README.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/build-prompt.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/reuse-audit.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/source-map.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/templates/visual-plan.template.html +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/test_skill_contract.py +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/workflow/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/workflow/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/workflow/plan-packet.contract.test.mjs +0 -0
- /package/.agents/{skills → skills-archived}/anthropic-plan/workflow/plan-packet.mjs +0 -0
- /package/.agents/{skills → skills-archived}/auditing-claude-config/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/auditing-claude-config/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/auditing-claude-config/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/auditing-claude-config/reference/probe-hook.md +0 -0
- /package/.agents/{skills → skills-archived}/beat-sheet/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/beat-sheet/reference/visual-beats.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/CONSTRAINTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/EXAMPLES.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/PROMPTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/README.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/audit-and-teammates.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/copilot-gap-analysis.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/design-rationale.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/github-pr-reviews.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/audit-assign-ids.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/audit-capture-excerpts.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/audit-walk-categories.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/audit-write-xml.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-append-summary.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-apply-fixes.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-git-add-commit.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-git-push.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-post-reply.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-publish-summary.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-py-compile.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-read-files.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-resolve-thread.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-test-suite.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-violation-count.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/obstacles/fix-write-xml.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/reference/team-setup.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/README.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_code_rules_gate.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_fix_hookspath.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_preflight.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/probe_code_rules_enforcer_check_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/reflow_skill_md_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/bugteam_scripts_constants/windows_safe_rmtree_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/probe_code_rules_enforcer_check.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/test_bugteam_code_rules_gate.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/test_bugteam_fix_hookspath.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/test_bugteam_preflight.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/test_probe_code_rules_enforcer_check.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/test_windows_safe_rmtree.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/scripts/windows_safe_rmtree.py +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/sources.md +0 -0
- /package/.agents/{skills → skills-archived}/bugteam/test_skill_additions.py +0 -0
- /package/.agents/{skills → skills-archived}/closeout/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/closeout/reference/handoff-prompt-template.md +0 -0
- /package/.agents/{skills → skills-archived}/closeout/reference/pii-redaction-checklist.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/reference/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/reference/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/reference/cli-contract.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/reference/loop-integration.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_down_classifier.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/classifier_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/codex_usage_probe_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/findings_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_review_scripts_constants/run_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/codex_usage_probe.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/auth_failure_synthetic.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/config_load_failure_v0.125.0.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/freeform_findings_v0.144.3.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/model_rejection_v0.125.0.jsonl +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/structured_findings.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/success_stream_v0.144.3.jsonl +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/unknown_failure_synthetic.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/fixtures/usage_limit_synthetic.txt +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/parse_codex_findings.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/run_codex_review.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/test_codex_down_classifier.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/test_codex_usage_probe.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/test_parse_codex_findings.py +0 -0
- /package/.agents/{skills → skills-archived}/codex-review/scripts/test_run_codex_review.py +0 -0
- /package/.agents/{skills → skills-archived}/comments/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/condensing-instructions/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/reference/tier-rubric.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/conftest.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/copilot_finding_triage_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/copilot_finding_triage_constants/config/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/copilot_finding_triage_constants/config/notify_ntfy_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/notify_ntfy.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/scripts/test_notify_ntfy.py +0 -0
- /package/.agents/{skills → skills-archived}/copilot-finding-triage/templates/notification.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-review/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-review/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-review/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/copilot-review/templates/subagent-prompt.md +0 -0
- /package/.agents/{skills → skills-archived}/descriptions/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/emergencies/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/grokify/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/grokify/capability-claims.test.mjs +0 -0
- /package/.agents/{skills → skills-archived}/grokify/templates/handoff-template.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/final-validation-tasks.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/model-routing.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/packet-contract.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/packet-schema.json +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/process-inventory.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/review-loop.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/run-record.schema.json +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/self-audit-tasks.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/task-seeds.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/reference/task-ticket.md +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/config/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/config/constants.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/create_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/load_skill_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/test_create_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/test_validate_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/test_validate_protocol.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/test_validate_run.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/validate_packet.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/validate_protocol.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/scripts/validate_run.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/test_skill_contract.py +0 -0
- /package/.agents/{skills → skills-archived}/plan-to-pr/test_task_ticket_contract.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/pr_converge_skill_constants/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/pr_converge_skill_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/convergence-gates.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/examples.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/fix-protocol.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/ground-rules.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-post-replies.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-publish-summary.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-push.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-read-filelines.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-reset-state.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-resolve-threads.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-spawn-clean-coder.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-stage-commit.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-trigger-bugbot.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/obstacles/fix-write-test.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/progress-checklist.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/state-schema.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/reference/stop-conditions.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/README.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/_pr_converge_path_setup.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/caller-window-pid.ps1 +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_bugbot_ci.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_convergence.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_convergence_availability.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_convergence_gates.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_convergence_thread_gates.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/check_pending_reviews.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/conftest.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/cursor-agents-continue-caller.cmd +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/cursor-agents-continue-stop-others.ps1 +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/cursor-agents-continue.ahk +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/cursor-agents-continue.cmd +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/fetch_copilot_reviews.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/post_fix_reply.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/pr_converge_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/reflow_skill_md_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test__pr_converge_path_setup.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_bugbot_ci.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_availability.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_codex.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_contract.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_fixture.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_gates.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_check_convergence_thread_gates.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_cursor_agents_continue.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/scripts/test_reflow_skill_md.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/test_step5_host_branch.py +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/workflows/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-converge/workflows/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-fix-protocol/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-loop-cloud-transport/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-loop-cloud-transport/reference/identity-and-hooks.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-loop-cloud-transport/reference/substitution-matrix.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-loop-lifecycle/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/pr-loop-lifecycle/reference/teardown-publish-permissions.md +0 -0
- /package/.agents/{skills → skills-archived}/recall/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/recall/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/recall/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/release-notes-html/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/remember/.claude/CLAUDE.md +0 -0
- /package/.agents/{skills → skills-archived}/remember/AGENTS.md +0 -0
- /package/.agents/{skills → skills-archived}/remember/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/reviewer-gates/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/reviews/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/show/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/accessibility.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/art.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/charts.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/core-design.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/erds.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/flowcharts.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/host-and-html.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/illustrative-diagrams.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/interaction.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/mockups.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/quality-gates.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/structural-diagrams.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/subject-inventory.md +0 -0
- /package/.agents/{skills → skills-archived}/show/references/svg-contract.md +0 -0
- /package/.agents/{skills → skills-archived}/show/routing.yaml +0 -0
- /package/.agents/{skills → skills-archived}/show/samples/pr1262-v2.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/scripts/README.md +0 -0
- /package/.agents/{skills → skills-archived}/show/scripts/validate-artifact.py +0 -0
- /package/.agents/{skills → skills-archived}/show/scripts/validate-package.py +0 -0
- /package/.agents/{skills → skills-archived}/show/templates/html-widget.html +0 -0
- /package/.agents/{skills → skills-archived}/show/templates/svg-base.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/css-var.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/dead-ref.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/filled-glyph.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/inherited-fill.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/invalid.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/large-canvas.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/unfilled-connector.svg +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/fixtures/valid.html +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/test_validate-artifact.py +0 -0
- /package/.agents/{skills → skills-archived}/show/tests/test_validators.py +0 -0
- /package/.agents/{skills → skills-archived}/show/workflows/create-visual.md +0 -0
- /package/.agents/{skills → skills-archived}/show/workflows/review-visual.md +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/SKILL.md +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/reference/path-layers.md +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/reference/split-further-loop.md +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/reference/splitting-principles.md +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/analyze_pr.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/categorize_files.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/__init__.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/dependency_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/git_operations_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/packing_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/plan_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/config/split_pr_constants.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/execute_split_slices.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/pack_files_into_slices.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_dependency_graph.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_git_operations.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_layer_order.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_paginate.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_process_runner.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_script_types.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/split_pr_title.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_analyze_pr.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_categorize_files.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_categorize_files_packing.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_execute_split_slices.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_dependency_graph.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_git_operations.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_layer_order.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_paginate.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_script_types.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_split_pr_title.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_verify_dependency_graph.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_verify_plan.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_verify_plan_contract.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/test_verify_plan_path_normalization.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/verify_dependency_graph.py +0 -0
- /package/.agents/{skills → skills-archived}/split-pr/scripts/verify_plan.py +0 -0
|
@@ -20,7 +20,7 @@ from hooks_constants.ask_user_question_shape import ( # noqa: E402
|
|
|
20
20
|
mask_inline_code,
|
|
21
21
|
normalize_line_endings,
|
|
22
22
|
)
|
|
23
|
-
from hooks_constants.
|
|
23
|
+
from hooks_constants.ask_user_question_shape_constants import ( # noqa: E402
|
|
24
24
|
MAXIMUM_OPTION_DESCRIPTION_WORD_COUNT,
|
|
25
25
|
MAXIMUM_QUESTION_SENTENCE_COUNT,
|
|
26
26
|
MAXIMUM_QUESTION_WORD_COUNT,
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Contract tests for the retained AskUserQuestion shape capability."""
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
each carry their own copy of the metrics that read a reply's prose, so a
|
|
5
|
-
tuning landed in one copy alone drifts the two gates apart. These checks fail
|
|
6
|
-
loud on that drift::
|
|
7
|
-
|
|
8
|
-
COUNTABLE_WORD_PATTERN ok: byte-equal across both copies
|
|
9
|
-
table-row pattern ok: byte-equal across both copies
|
|
10
|
-
"- Run the migration" ok: both copies read a list marker
|
|
11
|
-
"1.5% of hosts still fail." ok: neither copy reads a list marker
|
|
12
|
-
"**1.** Run the migration" flag: the eli11 copy alone reads a marker
|
|
13
|
-
|
|
14
|
-
The list-marker copies hold two different shapes — one combined regex against
|
|
15
|
-
a bullet/numbered split — so they are pinned by the lines they agree on plus
|
|
16
|
-
the one line they read differently.
|
|
17
|
-
|
|
18
|
-
Row 2 of ``~/.claude/orchestrator-runs/falsify-first/parked-items.md`` carries
|
|
19
|
-
the shared home that retires these copies.
|
|
20
|
-
"""
|
|
3
|
+
from __future__ import annotations
|
|
21
4
|
|
|
22
5
|
import pathlib
|
|
23
6
|
import re
|
|
@@ -27,106 +10,45 @@ _HOOKS_ROOT = pathlib.Path(__file__).resolve().parent.parent
|
|
|
27
10
|
if str(_HOOKS_ROOT) not in sys.path:
|
|
28
11
|
sys.path.insert(0, str(_HOOKS_ROOT))
|
|
29
12
|
|
|
30
|
-
from hooks_constants.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
TABLE_ROW_PATTERN,
|
|
13
|
+
from hooks_constants.ask_user_question_shape import ( # noqa: E402
|
|
14
|
+
COUNTABLE_WORD_PATTERN as ANALYZER_COUNTABLE_WORD_PATTERN,
|
|
15
|
+
find_chat_detail_markers,
|
|
34
16
|
)
|
|
35
|
-
from hooks_constants.
|
|
36
|
-
|
|
17
|
+
from hooks_constants.ask_user_question_shape_constants import ( # noqa: E402
|
|
18
|
+
ALL_CHAT_DETAIL_MARKERS,
|
|
19
|
+
COUNTABLE_WORD_PATTERN,
|
|
37
20
|
)
|
|
38
|
-
from hooks_constants.ask_user_question_shape import (
|
|
39
|
-
COUNTABLE_WORD_PATTERN as SHAPE_COUNTABLE_WORD_PATTERN,
|
|
40
|
-
)
|
|
41
|
-
from hooks_constants.plain_language_blocker_constants import ALL_CHAT_DETAIL_MARKERS
|
|
42
|
-
from hooks_constants.plain_language_blocker_constants import (
|
|
43
|
-
COUNTABLE_WORD_PATTERN as PLAIN_LANGUAGE_COUNTABLE_WORD_PATTERN,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
_TABLE_ROW_MARKER_LABEL = "a table row"
|
|
47
|
-
_LIST_MARKER_LABEL = "a bullet or numbered list marker"
|
|
48
|
-
_BOLD_NUMBERED_STEP_LINE = "**1.** Run the migration"
|
|
49
|
-
|
|
50
|
-
_ALL_SHARED_LIST_MARKER_LINES = (
|
|
51
|
-
"- Run the migration",
|
|
52
|
-
"* Run the migration",
|
|
53
|
-
"+ Run the migration",
|
|
54
|
-
"1. Run the migration",
|
|
55
|
-
"2) Run the migration",
|
|
56
|
-
" - Run the migration",
|
|
57
|
-
" 1. Run the migration",
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
_ALL_NON_LIST_MARKER_LINES = (
|
|
61
|
-
"Run the migration",
|
|
62
|
-
"1.5% of hosts still fail.",
|
|
63
|
-
"|table|row|",
|
|
64
|
-
"-no space after the dash",
|
|
65
|
-
)
|
|
66
|
-
|
|
67
21
|
|
|
68
|
-
def _chat_detail_marker_named(marker_label: str) -> re.Pattern[str]:
|
|
69
|
-
"""Return the plain-language chat-detail pattern carrying one label.
|
|
70
22
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Returns:
|
|
75
|
-
The compiled pattern registered under that label.
|
|
76
|
-
"""
|
|
23
|
+
def _marker_pattern(marker_label: str) -> re.Pattern[str]:
|
|
24
|
+
"""Return the pattern registered under one shape-marker label."""
|
|
77
25
|
for each_pattern, each_label in ALL_CHAT_DETAIL_MARKERS:
|
|
78
26
|
if each_label == marker_label:
|
|
79
27
|
return each_pattern
|
|
80
|
-
raise AssertionError(f"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def _eli11_copy_reads_a_list_marker(reply_line: str) -> bool:
|
|
84
|
-
"""Report whether the eli11 bullet/numbered split reads a list marker.
|
|
85
|
-
|
|
86
|
-
Args:
|
|
87
|
-
reply_line: One line of reply text.
|
|
88
|
-
|
|
89
|
-
Returns:
|
|
90
|
-
True when either half of the split matches the line.
|
|
91
|
-
"""
|
|
92
|
-
if BULLET_LINE_PATTERN.search(reply_line):
|
|
93
|
-
return True
|
|
94
|
-
return bool(NUMBERED_STEP_PATTERN.search(reply_line))
|
|
28
|
+
raise AssertionError(f"missing shape marker: {marker_label}")
|
|
95
29
|
|
|
96
30
|
|
|
97
|
-
def
|
|
98
|
-
assert
|
|
99
|
-
PLAIN_LANGUAGE_COUNTABLE_WORD_PATTERN.pattern
|
|
100
|
-
== ELI11_COUNTABLE_WORD_PATTERN.pattern
|
|
101
|
-
)
|
|
102
|
-
assert (
|
|
103
|
-
PLAIN_LANGUAGE_COUNTABLE_WORD_PATTERN.flags
|
|
104
|
-
== ELI11_COUNTABLE_WORD_PATTERN.flags
|
|
105
|
-
)
|
|
106
|
-
|
|
31
|
+
def test_analyzer_uses_the_canonical_countable_word_pattern() -> None:
|
|
32
|
+
assert ANALYZER_COUNTABLE_WORD_PATTERN is COUNTABLE_WORD_PATTERN
|
|
107
33
|
|
|
108
|
-
def test_shape_analyzer_binds_the_plain_language_countable_word_pattern() -> None:
|
|
109
|
-
"""The pure shape analyzer reuses the shared pattern object, not a private copy."""
|
|
110
|
-
assert SHAPE_COUNTABLE_WORD_PATTERN is PLAIN_LANGUAGE_COUNTABLE_WORD_PATTERN
|
|
111
34
|
|
|
35
|
+
def test_shape_marker_table_reads_shared_layout_markers() -> None:
|
|
36
|
+
table_pattern = _marker_pattern("a table row")
|
|
37
|
+
list_pattern = _marker_pattern("a bullet or numbered list marker")
|
|
112
38
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
assert
|
|
116
|
-
assert
|
|
39
|
+
assert table_pattern.search("| gate | row |")
|
|
40
|
+
assert list_pattern.search("- Run the migration")
|
|
41
|
+
assert list_pattern.search("1. Run the migration")
|
|
42
|
+
assert not list_pattern.search("1.5% of hosts still fail.")
|
|
117
43
|
|
|
118
44
|
|
|
119
|
-
def
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
assert _eli11_copy_reads_a_list_marker(each_line)
|
|
124
|
-
for each_line in _ALL_NON_LIST_MARKER_LINES:
|
|
125
|
-
assert not combined_marker.search(each_line)
|
|
126
|
-
assert not _eli11_copy_reads_a_list_marker(each_line)
|
|
127
|
-
|
|
45
|
+
def test_analyzer_reports_each_layout_marker() -> None:
|
|
46
|
+
marker_names = find_chat_detail_markers(
|
|
47
|
+
"Question?\n- Split the file\n\n| gate | row |"
|
|
48
|
+
)
|
|
128
49
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
50
|
+
assert marker_names == [
|
|
51
|
+
"a table row",
|
|
52
|
+
"a bullet or numbered list marker",
|
|
53
|
+
"more than one paragraph",
|
|
54
|
+
]
|
|
@@ -8,8 +8,12 @@ __all__ = [
|
|
|
8
8
|
|
|
9
9
|
WORKING_STYLE_PROMPT = (
|
|
10
10
|
"Document each task in a location that remains easy to find later. Keep a "
|
|
11
|
-
"running scratch text ledger as you work.
|
|
12
|
-
"
|
|
11
|
+
"running scratch text ledger as you work. Use ELI5 for beginner framing, large "
|
|
12
|
+
"visuals, minimal text, one stable self-contained HTML artifact, update-in-place "
|
|
13
|
+
"continuity, and sharing when a user-facing response needs that presentation. "
|
|
14
|
+
"Keep responses focused, brief, and concise. Apply ~/.claude/rules/asd-ste100-language.md for "
|
|
15
|
+
"user-facing word choice, sentence style, tone, punctuation, and prose form. "
|
|
16
|
+
"Keep disclaimers and caveats short while giving "
|
|
13
17
|
"the main answer most of the response. Give a high-level explanation by default "
|
|
14
18
|
"and provide depth when the request calls for it. "
|
|
15
19
|
"Before your first tool call, state your next action in one sentence. While "
|
|
@@ -28,12 +32,7 @@ WORKING_STYLE_PROMPT = (
|
|
|
28
32
|
"when the ambiguity changes the outcome, scope, audience, format, or risk. Use a "
|
|
29
33
|
"clearly stated low-risk assumption when the intended result remains stable. "
|
|
30
34
|
"Pause for the user's choice before making a high-impact decision. "
|
|
31
|
-
"Use
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"that presents only the intended action, fact, reason, or outcome. Use current, "
|
|
35
|
-
"immediately relevant context and omit historical clutter. Use plain language, "
|
|
36
|
-
"full terms, and simple descriptive names that communicate their meaning "
|
|
37
|
-
"immediately. Keep all text concise, clear, direct, and focused entirely on "
|
|
38
|
-
"useful information."
|
|
35
|
+
"Use current, immediately relevant context. Name each action, fact, reason, "
|
|
36
|
+
"and outcome. Use full terms and specific names for repository work. Keep all "
|
|
37
|
+
"text concise, clear, direct, and useful."
|
|
39
38
|
)
|
package/hooks/session/AGENTS.md
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
SessionStart and SessionEnd hooks for per-session setup and cleanup: removing stale session and plugin-data directories at startup, detecting unregistered repositories, starting the session's task-list maintenance loop, injecting working-style guidance, and clearing PR-author swap state at shutdown.
|
|
4
4
|
|
|
5
|
+
The working-style projection uses `~/.claude/rules/asd-ste100-language.md` for
|
|
6
|
+
user-facing word choice, sentence style, tone, punctuation, and prose form.
|
|
7
|
+
|
|
5
8
|
## Key files
|
|
6
9
|
|
|
7
10
|
| File | Event | What it does |
|
|
@@ -17,7 +20,7 @@ SessionStart and SessionEnd hooks for per-session setup and cleanup: removing st
|
|
|
17
20
|
| `_path_setup.py` | — | Inserts the hooks directory on `sys.path` so SessionStart scripts import `hooks_constants` with top-level imports. |
|
|
18
21
|
| `test_orchestrator_auto_starter.py` | — | Tests for `orchestrator_auto_starter.py` |
|
|
19
22
|
| `test_issue_tracker_session_starter.py` | — | Tests for `issue_tracker_session_starter.py` |
|
|
20
|
-
| `working_style_prompt.py` | SessionStart | Emits an `additionalContext` block with the fixed working-style prompt (running ledger,
|
|
23
|
+
| `working_style_prompt.py` | SessionStart | Emits an `additionalContext` block with the fixed working-style prompt (running ledger, canonical language policy, outcome-first finish, scope discipline). Writes nothing and runs no tools itself. |
|
|
21
24
|
| `test_gh_pr_author_session_cleanup.py` | — | Tests for `gh_pr_author_session_cleanup.py` |
|
|
22
25
|
| `test_session_edit_tracker_cleanup.py` | — | Tests for `session_edit_tracker_cleanup.py` |
|
|
23
26
|
| `test_session_env_cleanup.py` | — | Tests for `session_env_cleanup.py` |
|
|
@@ -36,14 +36,18 @@ class TestWorkingStylePrompt:
|
|
|
36
36
|
emitted = json.loads(_run_main())
|
|
37
37
|
assert emitted["additionalContext"] == WORKING_STYLE_PROMPT
|
|
38
38
|
|
|
39
|
-
def
|
|
39
|
+
def test_emitted_prompt_contains_canonical_policy_and_scope_guidance(self) -> None:
|
|
40
40
|
emitted = json.loads(_run_main())
|
|
41
41
|
prompt_text = emitted["additionalContext"]
|
|
42
42
|
assert "Document each task in a location that remains easy to find later." in prompt_text
|
|
43
43
|
assert "Deliver the requested work at its intended scope." in prompt_text
|
|
44
|
-
assert "Use
|
|
45
|
-
assert "
|
|
46
|
-
assert "
|
|
44
|
+
assert "Use ELI5 for beginner framing, large visuals, minimal text" in prompt_text
|
|
45
|
+
assert "one stable self-contained HTML artifact" in prompt_text
|
|
46
|
+
assert "update-in-place continuity, and sharing" in prompt_text
|
|
47
|
+
assert "Apply ~/.claude/rules/asd-ste100-language.md for user-facing word choice" in prompt_text
|
|
48
|
+
assert "Use current, immediately relevant context." in prompt_text
|
|
49
|
+
assert "Name each action, fact, reason, and outcome." in prompt_text
|
|
50
|
+
assert "Use full terms and specific names for repository work." in prompt_text
|
|
47
51
|
assert "When a request has multiple reasonable interpretations" in prompt_text
|
|
48
52
|
assert "Ask one focused clarification question" in prompt_text
|
|
49
53
|
assert "Pause for the user's choice before making a high-impact decision." in prompt_text
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
"""SessionStart hook — inject working-style guidance into the session.
|
|
3
3
|
|
|
4
4
|
At session start this hook emits an ``additionalContext`` block carrying a fixed
|
|
5
|
-
working-style prompt:
|
|
6
|
-
|
|
5
|
+
working-style prompt: use ELI5 for the beginner presentation envelope, follow
|
|
6
|
+
``~/.claude/rules/asd-ste100-language.md`` for sentence prose, keep a running
|
|
7
|
+
ledger, narrate before the first tool call, lead with the outcome, and stay at
|
|
8
|
+
the asked scope.
|
|
7
9
|
The hook writes nothing and runs no tools itself.
|
|
8
10
|
"""
|
|
9
11
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-dev-env",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.17.0",
|
|
4
4
|
"description": "Claude Code development standards — rules, hooks, agents, commands, and skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,9 +44,6 @@
|
|
|
44
44
|
"tdd",
|
|
45
45
|
"code-quality"
|
|
46
46
|
],
|
|
47
|
-
"dependencies": {
|
|
48
|
-
"@jl-cmd/prompt-generator": "^1.0.0"
|
|
49
|
-
},
|
|
50
47
|
"license": "MIT",
|
|
51
48
|
"repository": {
|
|
52
49
|
"type": "git",
|
package/rules/AGENTS.md
CHANGED
|
@@ -5,12 +5,13 @@ paths:
|
|
|
5
5
|
|
|
6
6
|
# rules
|
|
7
7
|
|
|
8
|
-
Rule files installed into `~/.claude/rules/` by `bin/install.mjs`. A rule without `paths:` frontmatter loads at the start of every session; a rule with `paths:` frontmatter loads only when the session works with a file its globs match. The `InstructionsLoaded` log records that match as a `path_glob_match` event. Each `.md` file covers one named
|
|
8
|
+
Rule files installed into `~/.claude/rules/` by `bin/install.mjs`. A rule without `paths:` frontmatter loads at the start of every session; a rule with `paths:` frontmatter loads only when the session works with a file its globs match. The `InstructionsLoaded` log records that match as a `path_glob_match` event. The `asd-ste100-language.md` file owns general user-facing language. Each other `.md` file covers one named behavior contract; hook-enforced rules are also backed by a Python hook in `hooks/`.
|
|
9
9
|
|
|
10
10
|
## Files
|
|
11
11
|
|
|
12
12
|
| File | Rule |
|
|
13
13
|
|---|---|
|
|
14
|
+
| `asd-ste100-language.md` | Sole general user-facing language authority; concise conversational adaptation of ASD-STE100 Issue 9 |
|
|
14
15
|
| `agent-spawn-protocol.md` | Check context sufficiency before a spawn and ask subagents for file-and-line answers; `/prompt-generator` is recommended for a complex or user-facing spawn |
|
|
15
16
|
| `anti-corollary-tests.md` | Tests must carry information: no corollary matrices over canonical reductions, no suite that only matches a dead-implementation default, stated mutation in the audit lane |
|
|
16
17
|
| `ask-user-question-required.md` | Every user-directed question goes through the `AskUserQuestion` tool — no plain-text questions |
|
|
@@ -23,10 +24,8 @@ Rule files installed into `~/.claude/rules/` by `bin/install.mjs`. A rule withou
|
|
|
23
24
|
| `context7.md` | Use Context7 MCP to fetch current library docs; always prefer live docs over built-in knowledge |
|
|
24
25
|
| `destructive-commands.md` | Allowed removal forms and the ephemeral namespace the `destructive_command_blocker` auto-allows; keep destructive literals out of a Bash command string even as data |
|
|
25
26
|
| `doc-inventory-integrity.md` | Three inventory shapes stay in step with the code: a per-directory `CLAUDE.md` file list, a package `README`/`SKILL.md` inventory, and an env-var summary table |
|
|
26
|
-
| `doc-prose-cuts.md` | Four sentence shapes to cut from prose: exclusion claims, justification sentences, conversation references, and time references |
|
|
27
27
|
| `docstring-prose-matches-implementation.md` | Prose enumerations in docstrings cover every behavior the body applies |
|
|
28
28
|
| `durable-post-artifacts.md` | GitHub post bodies never reference volatile scratch paths; text embeds inline and binary artifacts upload to the `artifacts` release with the permanent URL linked |
|
|
29
|
-
| `eli11-replies.md` | Every chat reply the user reads follows one shape: action first, detail last, few words; `plain-language.md` governs word choice, this rule governs reply length and shape |
|
|
30
29
|
| `explore-thoroughly.md` | Read relevant files and map existing patterns before proposing a change |
|
|
31
30
|
| `falsify-before-green.md` | A check's green counts as evidence only after that same check ran red on a named break, with a passing control beside it |
|
|
32
31
|
| `file-global-constants.md` | File-global constants need at least two same-file references; otherwise move value to `config/` |
|
|
@@ -39,11 +38,9 @@ Rule files installed into `~/.claude/rules/` by `bin/install.mjs`. A rule withou
|
|
|
39
38
|
| `nas-ssh-invocation.md` | Reach the NAS through the paramiko-backed `nas_ssh_key.py` runner, which signs in-process; every ssh-family client reads the key through file permissions, refuses it, and stalls an unattended run on a password prompt |
|
|
40
39
|
| `no-cross-skill-duplicate-helpers.md` | Within one skill a duplicated helper is blocked; across two skill folders a small self-contained copy is a sanctioned isolation tradeoff that draws a non-blocking advisory naming the source skill |
|
|
41
40
|
| `orphan-css-class.md` | Every `class="..."` attribute in Python-generated markup has a matching selector in the `<style>` block |
|
|
42
|
-
| `opus5-communication-contract.md` | Visible concision, one-sentence first progress, important-change-only updates, outcome-first finals, thinking-disabled tool narration (`opus5-communication-contract-v1`) |
|
|
43
41
|
| `paired-test-coverage.md` | A public function omitted by a module's established paired test suite must get a behavioral test |
|
|
44
42
|
| `parallel-tools.md` | Make all independent tool calls in a single response |
|
|
45
43
|
| `plain-illustrative-docstrings.md` | Public docstring narrative reads plainly and shows behavior with a diagram block (a `::` example or a doctest), painting a concrete scene a general developer follows on first read; a run-on backstop hook, a prose-wall backstop hook, and Category O9 audit enforce it |
|
|
46
|
-
| `plain-language.md` | Everyday words, short active sentences, lead with the answer |
|
|
47
44
|
| `prompt-workflow-context-controls.md` | Keep prompt-workflow instruction layers small and stable; load heavy skills on demand |
|
|
48
45
|
| `re-stage-before-commit.md` | Stage the files edited this session before `git commit`; the session edit stage gate denies a commit that leaves a tracked session edit unstaged, with `-a`, a pathspec, a preceding `git add`, and `# partial-commit` as escapes |
|
|
49
46
|
| `research-mode.md` | Three anti-hallucination constraints: say "I don't know", verify with citations, quote for factual grounding |
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# ASD-STE100 Language Policy
|
|
2
|
+
|
|
3
|
+
Use this rule as the sole general language authority for user-facing text in this repository.
|
|
4
|
+
It defines ordinary word choice, sentence style, tone, punctuation, and prose form.
|
|
5
|
+
|
|
6
|
+
This text is an **ASD-STE100 Issue 9 conversational adaptation**. It applies the standard's
|
|
7
|
+
clear-writing principles to assistant messages. The official standard remains the authority for
|
|
8
|
+
definitions and dictionary decisions.
|
|
9
|
+
|
|
10
|
+
## Official sources
|
|
11
|
+
|
|
12
|
+
- [ASD-STE100 Simplified Technical English, Issue 9 (2025-01-15)](https://www.asd-ste100.org/assets/files/ASD-STE100_ISSUE9.pdf)
|
|
13
|
+
- [ASD-STE100 FAQ](https://www.asd-ste100.org/STE_faq.html)
|
|
14
|
+
- [ASD-STE100 About page](https://www.asd-ste100.org/about_STE.html)
|
|
15
|
+
- [ASD-STE100 tools guidance](https://www.asd-ste100.org/STEsoftware.html)
|
|
16
|
+
- [STEMG white paper on ASD-STE100 and artificial intelligence](https://www.asd-ste100.org/assets/files/WhitePaper-ASD-STE100_and_AI.pdf)
|
|
17
|
+
|
|
18
|
+
## Writing policy
|
|
19
|
+
|
|
20
|
+
- Write short, complete sentences. Keep one topic in each explanatory sentence.
|
|
21
|
+
- Use active voice. Put the condition first when an instruction has a prerequisite.
|
|
22
|
+
- Write imperative procedure steps. Give one action in each sentence.
|
|
23
|
+
- Prefer familiar, precise words. Use one stable term for one item or action.
|
|
24
|
+
- Write full words and explicit references. Expand abbreviations and contractions when they first appear.
|
|
25
|
+
- Replace ambiguous pronouns with the noun they name.
|
|
26
|
+
- Use inclusive, neutral language.
|
|
27
|
+
- Use periods, commas, colons, and bullets to show structure.
|
|
28
|
+
- Preserve exact quoted labels, identifiers, formulas, titles, and interface text.
|
|
29
|
+
- Use `WARNING` for a real risk of injury or death. Use `CAUTION` for a real risk of equipment, tool, or machine damage. State the command or condition first, then state the result.
|
|
30
|
+
- Aim for 20 words or fewer in a procedure sentence when the technical content allows.
|
|
31
|
+
- Aim for 25 words or fewer in a descriptive sentence when the technical content allows.
|
|
32
|
+
|
|
33
|
+
Use this policy for chat, tool narration, questions, plans, documentation, code-adjacent prose,
|
|
34
|
+
and durable repository text. Named contracts can add behavior-specific structure, evidence,
|
|
35
|
+
question routing, current-state documentation, completion, docstring, or publication rules.
|
|
36
|
+
Those contracts use this policy for their language.
|
|
37
|
+
|
|
38
|
+
Treat automated output and language checks as drafting aids. A responsible human verifies
|
|
39
|
+
technical accuracy, terminology, safety, confidentiality, and intended meaning.
|
|
@@ -8,7 +8,7 @@ The `question_to_user_enforcer` Stop hook blocks a response whose final paragrap
|
|
|
8
8
|
|
|
9
9
|
`AskUserQuestion` renders as one plain unformatted text block. Detail — plans, counts, tradeoffs, background — goes in chat text before the call. The block itself carries a lean question and short choices. When a choice needs formatting, an inline visualizer tool carries it.
|
|
10
10
|
|
|
11
|
-
The `
|
|
11
|
+
The `ask_user_question_shape_blocker` PreToolUse hook denies an `AskUserQuestion` call whose `question` text or whose `description` under any of the `options` carries chat detail:
|
|
12
12
|
|
|
13
13
|
| What the block carries | Cap |
|
|
14
14
|
|---|---|
|
|
@@ -30,7 +30,7 @@ On a long build, set a checkpoint cadence and hold to it. At each interval, chec
|
|
|
30
30
|
|
|
31
31
|
Before you report progress, check each claim against a tool result from this session. State only what the evidence backs; name anything unverified as unverified. If tests fail, say so with the output; if a step was skipped, say that.
|
|
32
32
|
|
|
33
|
-
Visible progress follows [
|
|
33
|
+
Visible progress follows the [ASD-STE100 language policy](asd-ste100-language.md) and this rule's run-completion contract: the **first progress update is one sentence**; later updates mark only **important discoveries or a direction change**.
|
|
34
34
|
|
|
35
35
|
## Re-ground the final message
|
|
36
36
|
|
package/scripts/AGENTS.md
CHANGED
|
@@ -30,6 +30,7 @@ Utility scripts installed into `~/.claude/scripts/` by `bin/install.mjs`. Each s
|
|
|
30
30
|
| `check.ps1` | Runs the full code-quality check suite |
|
|
31
31
|
| `Get-SessionAccount.ps1` | Reports which Claude account the current session is actually logged into by comparing `~/.claude.json`'s CLI login against a `CLAUDE_USER_DATA_DIR` desktop profile's `lastKnownAccountUuid`, recovering the desktop account's email from profile storage when the two accounts differ |
|
|
32
32
|
| `Capture-PoolHealth.ps1` | Captures Windows memory pool counters, high-handle processes, and kernel pool tags (via `NtQuerySystemInformation` class 22), prints a threshold verdict with a remediation map, and exits non-zero when any alert threshold fires |
|
|
33
|
+
| `Show-Asset.ps1` | Opens files on screen, sizing each image window to the image's pixel dimensions and falling back to the registered default application for non-image files |
|
|
33
34
|
|
|
34
35
|
## Subdirectories
|
|
35
36
|
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<#
|
|
2
|
+
.SYNOPSIS
|
|
3
|
+
Opens files on screen, sizing each image window to the image's own dimensions.
|
|
4
|
+
|
|
5
|
+
.DESCRIPTION
|
|
6
|
+
For every path given, an image opens in a window whose client area matches the
|
|
7
|
+
image's pixel size, scaled down to fit the primary screen's working area when the
|
|
8
|
+
image is larger than the screen. A small image gets a usable minimum window with
|
|
9
|
+
the picture centered at native size. Non-image files open in their registered
|
|
10
|
+
default application, and any file that cannot be loaded as an image falls back to
|
|
11
|
+
that default application too. Escape or the close button dismisses a window; the
|
|
12
|
+
process exits once every window is closed.
|
|
13
|
+
|
|
14
|
+
.PARAMETER Paths
|
|
15
|
+
One or more file paths to open.
|
|
16
|
+
#>
|
|
17
|
+
param(
|
|
18
|
+
[Parameter(ValueFromRemainingArguments = $true)]
|
|
19
|
+
[string[]]$Paths
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
23
|
+
Add-Type -AssemblyName System.Drawing
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
[System.Windows.Forms.Application]::SetHighDpiMode([System.Windows.Forms.HighDpiMode]::PerMonitorV2) | Out-Null
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
$null = $_
|
|
30
|
+
}
|
|
31
|
+
[System.Windows.Forms.Application]::EnableVisualStyles()
|
|
32
|
+
|
|
33
|
+
$imageExtensions = @('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp', '.tif', '.tiff', '.ico')
|
|
34
|
+
$screenMargin = 80
|
|
35
|
+
$minimumClientWidth = 220
|
|
36
|
+
$minimumClientHeight = 160
|
|
37
|
+
$openWindowCount = 0
|
|
38
|
+
|
|
39
|
+
foreach ($path in $Paths) {
|
|
40
|
+
if (-not (Test-Path -LiteralPath $path)) { continue }
|
|
41
|
+
$fullPath = (Resolve-Path -LiteralPath $path).Path
|
|
42
|
+
$extension = [System.IO.Path]::GetExtension($fullPath).ToLowerInvariant()
|
|
43
|
+
|
|
44
|
+
if ($imageExtensions -notcontains $extension) {
|
|
45
|
+
Invoke-Item -LiteralPath $fullPath
|
|
46
|
+
continue
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
$imageBytes = [System.IO.File]::ReadAllBytes($fullPath)
|
|
51
|
+
$imageStream = New-Object System.IO.MemoryStream(, $imageBytes)
|
|
52
|
+
$loadedImage = [System.Drawing.Image]::FromStream($imageStream)
|
|
53
|
+
$image = New-Object System.Drawing.Bitmap($loadedImage)
|
|
54
|
+
$loadedImage.Dispose()
|
|
55
|
+
$imageStream.Dispose()
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
Invoke-Item -LiteralPath $fullPath
|
|
59
|
+
continue
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
$workingArea = [System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea
|
|
63
|
+
$maximumWidth = $workingArea.Width - $screenMargin
|
|
64
|
+
$maximumHeight = $workingArea.Height - $screenMargin
|
|
65
|
+
$scale = [Math]::Min(1.0, [Math]::Min($maximumWidth / $image.Width, $maximumHeight / $image.Height))
|
|
66
|
+
|
|
67
|
+
$pictureBox = New-Object System.Windows.Forms.PictureBox
|
|
68
|
+
$pictureBox.Dock = [System.Windows.Forms.DockStyle]::Fill
|
|
69
|
+
$pictureBox.Image = $image
|
|
70
|
+
|
|
71
|
+
if ($scale -lt 1.0) {
|
|
72
|
+
$pictureBox.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::Zoom
|
|
73
|
+
$clientWidth = [int][Math]::Round($image.Width * $scale)
|
|
74
|
+
$clientHeight = [int][Math]::Round($image.Height * $scale)
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
$pictureBox.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::CenterImage
|
|
78
|
+
$clientWidth = [Math]::Max($minimumClientWidth, $image.Width)
|
|
79
|
+
$clientHeight = [Math]::Max($minimumClientHeight, $image.Height)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
$form = New-Object System.Windows.Forms.Form
|
|
83
|
+
$form.Text = [System.IO.Path]::GetFileName($fullPath)
|
|
84
|
+
$form.AutoScaleMode = [System.Windows.Forms.AutoScaleMode]::None
|
|
85
|
+
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
|
|
86
|
+
$form.ClientSize = New-Object System.Drawing.Size($clientWidth, $clientHeight)
|
|
87
|
+
$form.KeyPreview = $true
|
|
88
|
+
$form.BackColor = [System.Drawing.Color]::FromArgb(24, 24, 24)
|
|
89
|
+
$form.Controls.Add($pictureBox)
|
|
90
|
+
|
|
91
|
+
$form.Add_KeyDown({
|
|
92
|
+
param($sender, $eventArguments)
|
|
93
|
+
if ($eventArguments.KeyCode -eq [System.Windows.Forms.Keys]::Escape) { $sender.Close() }
|
|
94
|
+
})
|
|
95
|
+
$form.Add_FormClosed({
|
|
96
|
+
$script:openWindowCount--
|
|
97
|
+
if ($script:openWindowCount -le 0) { [System.Windows.Forms.Application]::Exit() }
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
$openWindowCount++
|
|
101
|
+
$form.Show()
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if ($openWindowCount -gt 0) {
|
|
105
|
+
[System.Windows.Forms.Application]::Run()
|
|
106
|
+
}
|
|
@@ -100,21 +100,48 @@ def test_untracked_import_fails_tracking_check(tmp_path: Path) -> None:
|
|
|
100
100
|
assert any("Git mode 100644" in each_error for each_error in all_errors)
|
|
101
101
|
|
|
102
102
|
|
|
103
|
-
def
|
|
103
|
+
def test_pull_request_target_trigger_is_unconditional() -> None:
|
|
104
104
|
workflow_text = read_workflow("validate-instruction-pairs.yml")
|
|
105
105
|
|
|
106
|
-
assert " pull_request:\n push:\n" in workflow_text
|
|
106
|
+
assert " pull_request:\n pull_request_target:\n push:\n" in workflow_text
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
def test_instruction_pairs_status_context_stays_exact() -> None:
|
|
110
110
|
workflow_text = read_workflow("validate-instruction-pairs.yml")
|
|
111
111
|
reusable_workflow_text = read_workflow("instruction-pairs-reusable.yml")
|
|
112
|
+
caller_job_body = workflow_text.split(" instruction-pairs:\n", 1)[1]
|
|
113
|
+
caller_job_before_uses = caller_job_body.split("uses:", 1)[0]
|
|
112
114
|
|
|
113
115
|
assert (
|
|
114
116
|
" instruction-pairs:\n"
|
|
115
117
|
" uses: ./.github/workflows/instruction-pairs-reusable.yml\n"
|
|
116
118
|
" with:\n"
|
|
117
|
-
" validator-ref: ${{ github.event.pull_request.head.sha || github.sha }}\n"
|
|
118
119
|
in workflow_text
|
|
119
120
|
)
|
|
121
|
+
assert " validator-ref: ${{ github.sha }}\n" in workflow_text
|
|
122
|
+
assert (
|
|
123
|
+
" checkout-ref: ${{ github.event.pull_request.head.sha || github.sha }}\n"
|
|
124
|
+
in workflow_text
|
|
125
|
+
)
|
|
126
|
+
assert "if:" not in caller_job_before_uses
|
|
120
127
|
assert " instruction-pairs:\n name: instruction-pairs\n" in reusable_workflow_text
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def test_release_please_short_circuit_exists_in_workflow() -> None:
|
|
131
|
+
workflow_text = read_workflow("validate-instruction-pairs.yml")
|
|
132
|
+
reusable_workflow_text = read_workflow("instruction-pairs-reusable.yml")
|
|
133
|
+
|
|
134
|
+
assert "skip-validation:" in reusable_workflow_text
|
|
135
|
+
assert "type: boolean" in reusable_workflow_text
|
|
136
|
+
assert "default: false" in reusable_workflow_text
|
|
137
|
+
assert "if: ${{ inputs.skip-validation }}" in reusable_workflow_text
|
|
138
|
+
assert "if: ${{ !inputs.skip-validation }}" in reusable_workflow_text
|
|
139
|
+
assert (
|
|
140
|
+
"Skipping instruction-pairs tree validation for a release-please pull request."
|
|
141
|
+
in reusable_workflow_text
|
|
142
|
+
)
|
|
143
|
+
assert "ref: ${{ inputs.checkout-ref }}" in reusable_workflow_text
|
|
144
|
+
assert "release-please--" in workflow_text
|
|
145
|
+
assert "chore(.*): release " in workflow_text
|
|
146
|
+
assert "autorelease: pending" in workflow_text
|
|
147
|
+
assert "skip-validation:" in workflow_text
|
|
@@ -71,8 +71,8 @@ def test_explicit_roots_write_stem_named_mdc(
|
|
|
71
71
|
cursor = tmp_path / "cursor-home"
|
|
72
72
|
_write_minimal_curated_rules(claude / "rules")
|
|
73
73
|
_write_minimal_docs(claude / "docs")
|
|
74
|
-
(claude / "rules" / "
|
|
75
|
-
"#
|
|
74
|
+
(claude / "rules" / "asd-ste100-language.md").write_text(
|
|
75
|
+
"# ASD-STE100 Language Policy\n\nUse short sentences.\n",
|
|
76
76
|
encoding="utf-8",
|
|
77
77
|
)
|
|
78
78
|
(claude / "rules" / "CLAUDE.md").write_text("# Inventory\n", encoding="utf-8")
|
|
@@ -90,8 +90,8 @@ def test_explicit_roots_write_stem_named_mdc(
|
|
|
90
90
|
)
|
|
91
91
|
== 0
|
|
92
92
|
)
|
|
93
|
-
generated = (cursor / "rules" / "
|
|
94
|
-
assert 'description: "
|
|
93
|
+
generated = (cursor / "rules" / "asd-ste100-language.mdc").read_text(encoding="utf-8")
|
|
94
|
+
assert 'description: "ASD-STE100 Language Policy"' in generated
|
|
95
95
|
assert "alwaysApply: true" in generated
|
|
96
96
|
assert "Use short sentences." in generated
|
|
97
97
|
assert not (cursor / "rules" / "CLAUDE.mdc").is_file()
|
|
@@ -40,8 +40,8 @@ def test_build_mappings_emits_stem_mdc_for_remaining_claude_rules(
|
|
|
40
40
|
claude = tmp_path / ".claude"
|
|
41
41
|
_write_minimal_curated_rules(claude / "rules")
|
|
42
42
|
(claude / "docs").mkdir(parents=True, exist_ok=True)
|
|
43
|
-
(claude / "rules" / "
|
|
44
|
-
"#
|
|
43
|
+
(claude / "rules" / "asd-ste100-language.md").write_text(
|
|
44
|
+
"# ASD-STE100 Language Policy\n\nBe brief.\n",
|
|
45
45
|
encoding="utf-8",
|
|
46
46
|
)
|
|
47
47
|
(claude / "rules" / "CLAUDE.md").write_text(
|
|
@@ -50,10 +50,10 @@ def test_build_mappings_emits_stem_mdc_for_remaining_claude_rules(
|
|
|
50
50
|
(claude / "rules" / "AGENTS.md").write_text("# Agent inventory\n", encoding="utf-8")
|
|
51
51
|
mappings = build_mappings(claude)
|
|
52
52
|
output_by_key = {each_mapping.key: each_mapping for each_mapping in mappings}
|
|
53
|
-
discovered = output_by_key["
|
|
54
|
-
assert discovered.output_name == "
|
|
53
|
+
discovered = output_by_key["asd-ste100-language"]
|
|
54
|
+
assert discovered.output_name == "asd-ste100-language.mdc"
|
|
55
55
|
assert discovered.always_apply is True
|
|
56
|
-
assert discovered.description == "
|
|
56
|
+
assert discovered.description == "ASD-STE100 Language Policy"
|
|
57
57
|
assert "CLAUDE.md" not in {
|
|
58
58
|
each_source.name
|
|
59
59
|
for each_mapping in mappings
|
package/system-prompts/AGENTS.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
System-prompt reference files installed into `~/.claude/system-prompts/` by `bin/install.mjs`. Rules and skills pull a file (or one of its sections) into context on demand by citing its installed path.
|
|
4
4
|
|
|
5
|
+
Use `~/.claude/rules/asd-ste100-language.md` for user-facing word choice,
|
|
6
|
+
sentence style, tone, punctuation, and prose form. Each prompt keeps its
|
|
7
|
+
role-specific behavior contract.
|
|
8
|
+
|
|
9
|
+
ELI5 owns the global beginner presentation envelope: large visuals, minimal
|
|
10
|
+
text, one stable self-contained HTML artifact, update-in-place continuity, and
|
|
11
|
+
sharing.
|
|
12
|
+
|
|
5
13
|
## Files
|
|
6
14
|
|
|
7
15
|
| File | Purpose |
|