claude-dev-env 2.12.0 → 2.14.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.md +61 -0
- package/CLAUDE.md +1 -57
- package/_shared/AGENTS.md +15 -0
- package/_shared/CLAUDE.md +1 -15
- package/_shared/advisor/AGENTS.md +22 -0
- package/_shared/advisor/CLAUDE.md +1 -22
- package/_shared/pr-loop/AGENTS.md +27 -0
- package/_shared/pr-loop/CLAUDE.md +1 -27
- package/_shared/pr-loop/scripts/AGENTS.md +35 -0
- package/_shared/pr-loop/scripts/CLAUDE.md +1 -35
- package/_shared/pr-loop/scripts/code_rules_gate.py +2 -3
- package/_shared/pr-loop/scripts/code_rules_gate_parts/AGENTS.md +42 -0
- package/_shared/pr-loop/scripts/code_rules_gate_parts/CLAUDE.md +1 -42
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/AGENTS.md +26 -0
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/CLAUDE.md +1 -26
- package/_shared/pr-loop/scripts/test_code_rules_gate.py +0 -26
- package/_shared/pr-loop/scripts/tests/AGENTS.md +44 -0
- package/_shared/pr-loop/scripts/tests/CLAUDE.md +1 -44
- package/_shared/process-tree/AGENTS.md +41 -0
- package/_shared/process-tree/CLAUDE.md +1 -41
- package/agents/AGENTS.md +31 -0
- package/agents/CLAUDE.md +1 -32
- package/agents/clean-coder.md +6 -6
- package/agents/pr-description-writer.md +11 -81
- package/agents/test_agent_frontmatter.py +4 -4
- package/audit-rubrics/AGENTS.md +43 -0
- package/audit-rubrics/CLAUDE.md +1 -43
- package/audit-rubrics/category_rubrics/AGENTS.md +37 -0
- package/audit-rubrics/category_rubrics/CLAUDE.md +1 -37
- package/audit-rubrics/prompts/AGENTS.md +37 -0
- package/audit-rubrics/prompts/CLAUDE.md +1 -37
- package/bin/AGENTS.md +112 -0
- package/bin/CLAUDE.md +1 -112
- package/bin/ever-shipped-skills.mjs +1 -0
- package/bin/install-constants.mjs +6 -7
- package/bin/install.mjs +71 -13
- package/bin/install.prune.test.mjs +26 -0
- package/bin/install.settings-defaults.test.mjs +60 -33
- package/bin/install.test.mjs +36 -4
- package/commands/AGENTS.md +23 -0
- package/commands/CLAUDE.md +1 -23
- package/commands/hook-log-extract.md +3 -3
- package/commands/sr-loop.md +9 -5
- package/docs/AGENTS.md +32 -0
- package/docs/CLAUDE.md +1 -33
- package/docs/CODE_RULES.md +1 -1
- package/docs/imagegen.md +22 -0
- package/docs/references/AGENTS.md +17 -0
- package/docs/references/CLAUDE.md +1 -18
- package/hooks/AGENTS.md +31 -0
- package/hooks/CLAUDE.md +1 -31
- package/hooks/_gh_pr_author_swap_utils.py +14 -0
- package/hooks/advisory/AGENTS.md +16 -0
- package/hooks/advisory/CLAUDE.md +1 -16
- package/hooks/blocking/AGENTS.md +123 -0
- package/hooks/blocking/CLAUDE.md +1 -148
- package/hooks/blocking/claude_md_orphan_file_blocker_parts/AGENTS.md +28 -0
- package/hooks/blocking/claude_md_orphan_file_blocker_parts/CLAUDE.md +1 -28
- package/hooks/blocking/code_rules_banned_identifiers.py +1 -1
- package/hooks/blocking/code_rules_dead_module_constant.py +149 -37
- package/hooks/blocking/code_rules_probe_chains.py +6 -2
- package/hooks/blocking/config/AGENTS.md +10 -0
- package/hooks/blocking/config/CLAUDE.md +1 -22
- package/hooks/blocking/conventional_pr_title_gate.py +1 -2
- package/hooks/blocking/gh_pr_author_restore.py +7 -2
- package/hooks/blocking/intent_only_ending_blocker.py +11 -16
- package/hooks/blocking/inventory_intent_records/AGENTS.md +26 -0
- package/hooks/blocking/inventory_intent_records/CLAUDE.md +1 -26
- package/hooks/blocking/package_inventory_stale_blocker_parts/AGENTS.md +26 -0
- package/hooks/blocking/package_inventory_stale_blocker_parts/CLAUDE.md +1 -26
- package/hooks/blocking/pii_prevention_blocker_parts/AGENTS.md +24 -0
- package/hooks/blocking/pii_prevention_blocker_parts/CLAUDE.md +1 -24
- package/hooks/blocking/send_user_file_open_locally_blocker.py +1 -1
- package/hooks/blocking/stop_dispatcher.py +4 -4
- package/hooks/blocking/tdd_enforcer_parts/AGENTS.md +30 -0
- package/hooks/blocking/tdd_enforcer_parts/CLAUDE.md +1 -30
- package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +0 -3
- package/hooks/blocking/test_code_rules_enforcer_banned_prefixes.py +1 -1
- package/hooks/blocking/test_code_rules_enforcer_dead_module_constant.py +171 -0
- package/hooks/blocking/test_code_rules_enforcer_magic_allowlist.py +1 -1
- package/hooks/blocking/test_gh_pr_author_restore.py +2 -1
- package/hooks/blocking/test_intent_only_ending_blocker.py +4 -0
- package/hooks/blocking/test_pre_tool_use_dispatcher.py +6 -7
- package/hooks/blocking/test_send_user_file_open_locally_blocker.py +4 -3
- package/hooks/blocking/test_shared_stdin_adoption.py +0 -2
- package/hooks/diagnostic/AGENTS.md +43 -0
- package/hooks/diagnostic/CLAUDE.md +1 -43
- package/hooks/diagnostic/hook_log_extractor.py +4 -38
- package/hooks/diagnostic/hook_log_stop_wrapper.py +6 -155
- package/hooks/diagnostic/migrations/AGENTS.md +16 -0
- package/hooks/diagnostic/migrations/CLAUDE.md +1 -16
- package/hooks/diagnostic/queries/AGENTS.md +19 -0
- package/hooks/diagnostic/queries/CLAUDE.md +1 -19
- package/hooks/diagnostic/test_hook_log_extractor.py +10 -23
- package/hooks/diagnostic/test_hook_log_stop_wrapper.py +3 -331
- package/hooks/git-hooks/AGENTS.md +31 -0
- package/hooks/git-hooks/CLAUDE.md +1 -31
- package/hooks/git-hooks/git_hooks_constants/AGENTS.md +21 -0
- package/hooks/git-hooks/git_hooks_constants/CLAUDE.md +1 -21
- package/hooks/git-hooks/git_hooks_constants/__init__.py +4 -12
- package/hooks/git-hooks/pre_push.py +49 -118
- package/hooks/git-hooks/test_pre_push.py +111 -137
- package/hooks/hooks.json +0 -35
- package/hooks/hooks_constants/AGENTS.md +104 -0
- package/hooks/hooks_constants/CLAUDE.md +1 -113
- package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +0 -11
- package/hooks/hooks_constants/convergence_branch_constants.py +0 -1
- package/hooks/hooks_constants/fable_spawn_gate_constants.py +3 -4
- package/hooks/hooks_constants/hook_log_extractor_constants.py +1 -2
- package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +0 -8
- package/hooks/hooks_constants/send_user_file_open_locally_blocker_constants.py +1 -6
- package/hooks/hooks_constants/stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/task_list_loop_starter_constants.py +4 -3
- package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +1 -26
- package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +0 -5
- package/hooks/hooks_constants/test_stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/working_style_prompt_constants.py +29 -20
- package/hooks/lifecycle/AGENTS.md +18 -0
- package/hooks/lifecycle/CLAUDE.md +1 -20
- package/hooks/observability/AGENTS.md +20 -0
- package/hooks/observability/CLAUDE.md +1 -20
- package/hooks/session/AGENTS.md +33 -0
- package/hooks/session/CLAUDE.md +1 -33
- package/hooks/session/gh_pr_author_session_cleanup.py +7 -2
- package/hooks/session/task_list_loop_starter.py +3 -3
- package/hooks/session/test_gh_pr_author_session_cleanup.py +2 -1
- package/hooks/session/test_task_list_loop_starter.py +10 -2
- package/hooks/session/test_working_style_prompt.py +9 -4
- package/hooks/validation/AGENTS.md +20 -0
- package/hooks/validation/CLAUDE.md +1 -20
- package/hooks/validators/AGENTS.md +51 -0
- package/hooks/validators/CLAUDE.md +1 -51
- package/hooks/validators/health_check.py +52 -19
- package/hooks/validators/python_style_checks.py +1 -1
- package/hooks/validators/test_health_check.py +112 -27
- package/hooks/workflow/AGENTS.md +16 -0
- package/hooks/workflow/CLAUDE.md +1 -16
- package/installable-surfaces.manifest.json +1 -0
- package/output-styles/AGENTS.md +15 -0
- package/output-styles/CLAUDE.md +1 -15
- package/package.json +2 -1
- package/rules/AGENTS.md +61 -0
- package/rules/CLAUDE.md +1 -63
- package/rules/code-standards.md +5 -9
- package/rules/doc-prose-cuts.md +1 -1
- package/rules/gh-cli-conventions.md +0 -1
- package/rules/git-workflow.md +1 -3
- package/scripts/AGENTS.md +62 -0
- package/scripts/CLAUDE.md +1 -63
- package/scripts/_code_review_test_support.py +0 -95
- package/scripts/codex_compat_materializer.py +4 -0
- package/scripts/dev_env_scripts_constants/AGENTS.md +21 -0
- package/scripts/dev_env_scripts_constants/CLAUDE.md +1 -21
- package/scripts/dev_env_scripts_constants/code_review_constants.py +9 -98
- package/scripts/dev_env_scripts_constants/test_code_review_constants.py +1 -44
- package/scripts/invoke_code_review.py +8 -451
- package/scripts/sync_to_cursor/AGENTS.md +23 -0
- package/scripts/sync_to_cursor/CLAUDE.md +1 -23
- package/scripts/test_invoke_code_review.py +5 -61
- package/scripts/test_invoke_code_review_cli.py +1 -45
- package/scripts/test_invoke_code_review_contract.py +1 -118
- package/scripts/test_validate_instruction_pairs.py +90 -0
- package/scripts/test_verify_installable_package.py +5 -1
- package/scripts/tests/AGENTS.md +33 -0
- package/scripts/tests/CLAUDE.md +1 -33
- package/scripts/tests/test_codex_compat_materializer.py +36 -1
- package/scripts/validate_instruction_pairs.py +183 -0
- package/settings.json +1 -10
- package/skills/AGENTS.md +72 -0
- package/skills/CLAUDE.md +1 -64
- package/skills/_shared/AGENTS.md +44 -0
- package/skills/_shared/CLAUDE.md +1 -44
- package/skills/_shared/advisor/AGENTS.md +9 -0
- package/skills/_shared/advisor/CLAUDE.md +1 -9
- package/skills/_shared/pr-loop/AGENTS.md +50 -0
- package/skills/_shared/pr-loop/CLAUDE.md +1 -50
- package/skills/_shared/pr-loop/prompts/AGENTS.md +9 -0
- package/skills/_shared/pr-loop/prompts/CLAUDE.md +1 -9
- package/skills/_shared/pr-loop/scripts/AGENTS.md +35 -0
- package/skills/_shared/pr-loop/scripts/CLAUDE.md +1 -35
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +24 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +1 -24
- package/skills/anthropic-plan/AGENTS.md +34 -0
- package/skills/anthropic-plan/CLAUDE.md +1 -34
- package/skills/anthropic-plan/scripts/AGENTS.md +11 -0
- package/skills/anthropic-plan/scripts/CLAUDE.md +1 -11
- package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +16 -0
- package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +1 -16
- package/skills/anthropic-plan/templates/AGENTS.md +13 -0
- package/skills/anthropic-plan/templates/CLAUDE.md +1 -13
- package/skills/anthropic-plan/workflow/AGENTS.md +14 -0
- package/skills/anthropic-plan/workflow/CLAUDE.md +1 -14
- package/skills/auditing-claude-config/AGENTS.md +21 -0
- package/skills/auditing-claude-config/CLAUDE.md +1 -21
- package/skills/autoconverge/AGENTS.md +36 -0
- package/skills/autoconverge/CLAUDE.md +1 -36
- package/skills/autoconverge/reference/AGENTS.md +16 -0
- package/skills/autoconverge/reference/CLAUDE.md +1 -16
- package/skills/autoconverge/reference/convergence.md +7 -7
- package/skills/autoconverge/reference/gotchas.md +3 -10
- package/skills/autoconverge/workflow/AGENTS.md +26 -0
- package/skills/autoconverge/workflow/CLAUDE.md +1 -26
- package/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +16 -0
- package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +1 -16
- package/skills/autoconverge/workflow/converge.contract.test.mjs +53 -1388
- package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +4 -3
- package/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +33 -493
- package/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +15 -97
- package/skills/autoconverge/workflow/converge.mjs +201 -238
- package/skills/autoconverge/workflow/converge.precatch.test.mjs +1 -1
- package/skills/bugteam/AGENTS.md +30 -0
- package/skills/bugteam/CLAUDE.md +1 -30
- package/skills/bugteam/CONSTRAINTS.md +1 -1
- package/skills/bugteam/SKILL.md +9 -0
- package/skills/bugteam/reference/AGENTS.md +20 -0
- package/skills/bugteam/reference/CLAUDE.md +1 -20
- package/skills/bugteam/reference/audit-and-teammates.md +10 -6
- package/skills/bugteam/reference/obstacles/AGENTS.md +24 -0
- package/skills/bugteam/reference/obstacles/CLAUDE.md +1 -24
- package/skills/bugteam/scripts/AGENTS.md +30 -0
- package/skills/bugteam/scripts/CLAUDE.md +1 -30
- package/skills/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +18 -0
- package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +1 -18
- package/skills/bugteam/test_skill_additions.py +9 -0
- package/skills/closeout/reference/handoff-prompt-template.md +1 -1
- package/skills/codex-review/AGENTS.md +46 -0
- package/skills/codex-review/CLAUDE.md +1 -46
- package/skills/codex-review/reference/AGENTS.md +15 -0
- package/skills/codex-review/reference/CLAUDE.md +1 -15
- package/skills/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +18 -0
- package/skills/codex-review/scripts/codex_review_scripts_constants/CLAUDE.md +1 -18
- package/skills/codex-review/test_skill_scaffold.py +3 -3
- package/skills/comments/SKILL.md +65 -0
- package/skills/copilot-review/AGENTS.md +18 -0
- package/skills/copilot-review/CLAUDE.md +1 -18
- package/skills/descriptions/SKILL.md +51 -0
- package/skills/emergencies/SKILL.md +42 -0
- package/skills/everything-search/AGENTS.md +17 -0
- package/skills/everything-search/CLAUDE.md +1 -17
- package/skills/fresh-branch/AGENTS.md +14 -0
- package/skills/fresh-branch/CLAUDE.md +1 -14
- package/skills/grok-spawn/AGENTS.md +28 -0
- package/skills/grok-spawn/CLAUDE.md +1 -28
- package/skills/orchestrator/SKILL.md +2 -4
- package/skills/plan-to-pr/SKILL.md +6 -7
- package/skills/plan-to-pr/reference/final-validation-tasks.md +1 -1
- package/skills/plan-to-pr/reference/process-inventory.md +2 -2
- package/skills/plan-to-pr/reference/review-loop.md +2 -2
- package/skills/plan-to-pr/reference/run-record.schema.json +1 -1
- package/skills/plan-to-pr/reference/task-seeds.md +1 -1
- package/skills/plan-to-pr/reference/task-ticket.md +3 -4
- package/skills/plan-to-pr/scripts/config/constants.py +1 -2
- package/skills/plan-to-pr/scripts/test_validate_protocol.py +1 -1
- package/skills/plan-to-pr/test_skill_contract.py +2 -2
- package/skills/pr-converge/AGENTS.md +32 -0
- package/skills/pr-converge/CLAUDE.md +1 -32
- package/skills/pr-converge/SKILL.md +13 -16
- package/skills/pr-converge/pr_converge_skill_constants/AGENTS.md +26 -0
- package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +1 -26
- package/skills/pr-converge/reference/AGENTS.md +28 -0
- package/skills/pr-converge/reference/CLAUDE.md +1 -28
- package/skills/pr-converge/reference/obstacles/AGENTS.md +23 -0
- package/skills/pr-converge/reference/obstacles/CLAUDE.md +1 -23
- package/skills/pr-converge/reference/progress-checklist.md +6 -5
- package/skills/pr-converge/reference/state-schema.md +1 -27
- package/skills/pr-converge/scripts/AGENTS.md +46 -0
- package/skills/pr-converge/scripts/CLAUDE.md +1 -46
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +18 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -18
- package/skills/pr-converge/workflows/AGENTS.md +16 -0
- package/skills/pr-converge/workflows/CLAUDE.md +1 -16
- package/skills/pr-loop-cloud-transport/SKILL.md +1 -1
- package/skills/pr-loop-cloud-transport/reference/identity-and-hooks.md +3 -3
- package/skills/pr-loop-lifecycle/SKILL.md +1 -1
- package/skills/pr-loop-lifecycle/reference/teardown-publish-permissions.md +1 -1
- package/skills/prototype/SKILL.md +4 -4
- package/skills/prototype/reference/honest-limitations.md +5 -5
- package/skills/prototype/reference/promotion-tasks.md +2 -2
- package/skills/prototype/workflows/promotion.md +4 -6
- package/skills/rebase/AGENTS.md +32 -0
- package/skills/rebase/CLAUDE.md +1 -32
- package/skills/recall/AGENTS.md +30 -0
- package/skills/recall/CLAUDE.md +1 -30
- package/skills/remember/AGENTS.md +31 -0
- package/skills/remember/CLAUDE.md +1 -31
- package/skills/reviews/SKILL.md +85 -0
- package/skills/session-log/AGENTS.md +32 -0
- package/skills/session-log/CLAUDE.md +1 -32
- package/skills/session-tidy/AGENTS.md +36 -0
- package/skills/session-tidy/CLAUDE.md +1 -36
- package/skills/skill-builder/AGENTS.md +49 -0
- package/skills/skill-builder/CLAUDE.md +1 -49
- package/skills/skill-builder/references/AGENTS.md +25 -0
- package/skills/skill-builder/references/CLAUDE.md +1 -25
- package/skills/skill-builder/references/deterministic-elements.md +1 -1
- package/skills/skill-builder/templates/AGENTS.md +14 -0
- package/skills/skill-builder/templates/CLAUDE.md +1 -14
- package/skills/skill-builder/workflows/AGENTS.md +19 -0
- package/skills/skill-builder/workflows/CLAUDE.md +1 -19
- package/skills/small-cl/SKILL.md +52 -0
- package/skills/task-build/AGENTS.md +29 -0
- package/skills/task-build/CLAUDE.md +1 -29
- package/skills/update/AGENTS.md +38 -0
- package/skills/update/CLAUDE.md +1 -38
- package/system-prompts/AGENTS.md +17 -0
- package/system-prompts/CLAUDE.md +1 -17
- package/system-prompts/software-engineer.xml +3 -3
- package/agents/code-verifier.md +0 -74
- package/docs/PR_DESCRIPTION_GUIDE.md +0 -157
- package/docs/references/code-review-enforcement.md +0 -132
- package/hooks/blocking/code_review_enforcement_config_bootstrap.py +0 -53
- package/hooks/blocking/code_review_gate_deny.py +0 -74
- package/hooks/blocking/code_review_pr_create_gate.py +0 -198
- package/hooks/blocking/code_review_push_gate.py +0 -145
- package/hooks/blocking/code_review_stamp_directory_write_blocker.py +0 -348
- package/hooks/blocking/code_review_stamp_store.py +0 -233
- package/hooks/blocking/code_review_stamp_write_blocker_parts/__init__.py +0 -7
- package/hooks/blocking/code_review_stamp_write_blocker_parts/conftest.py +0 -15
- package/hooks/blocking/code_review_stamp_write_blocker_parts/obfuscated_stamp_path_reference.py +0 -212
- package/hooks/blocking/code_review_stamp_write_blocker_parts/split_directory_change_into_stamp.py +0 -138
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_obfuscated_stamp_path_reference.py +0 -49
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_split_directory_change_into_stamp.py +0 -38
- package/hooks/blocking/code_verifier_spawn_preflight_gate.py +0 -483
- package/hooks/blocking/config/code_review_enforcement_constants.py +0 -143
- package/hooks/blocking/config/test_code_review_enforcement_constants.py +0 -166
- package/hooks/blocking/config/verified_commit_constants.py +0 -160
- package/hooks/blocking/config/verified_commit_context_constants.py +0 -21
- package/hooks/blocking/config/verified_commit_gate_output_constants.py +0 -14
- package/hooks/blocking/conftest.py +0 -123
- package/hooks/blocking/convergence_gate_blocker.py +0 -310
- package/hooks/blocking/pr_converge_bugteam_enforcer.py +0 -170
- package/hooks/blocking/pr_description_body_audit.py +0 -148
- package/hooks/blocking/pr_description_command_parser.py +0 -237
- package/hooks/blocking/pr_description_enforcer.py +0 -227
- package/hooks/blocking/pr_description_pr_number.py +0 -155
- package/hooks/blocking/pr_description_proof_of_work.py +0 -385
- package/hooks/blocking/pr_description_readability.py +0 -364
- package/hooks/blocking/reviewer_spawn_gate.py +0 -182
- package/hooks/blocking/test_code_review_enforcement_config_bootstrap.py +0 -62
- package/hooks/blocking/test_code_review_gate_deny.py +0 -54
- package/hooks/blocking/test_code_review_pr_create_gate.py +0 -199
- package/hooks/blocking/test_code_review_push_gate.py +0 -205
- package/hooks/blocking/test_code_review_stamp_directory_write_blocker.py +0 -199
- package/hooks/blocking/test_code_review_stamp_store.py +0 -205
- package/hooks/blocking/test_code_verifier_spawn_preflight_gate.py +0 -710
- package/hooks/blocking/test_code_verifier_tools_contract.py +0 -28
- package/hooks/blocking/test_convergence_gate_blocker.py +0 -428
- package/hooks/blocking/test_pr_converge_bugteam_enforcer.py +0 -311
- package/hooks/blocking/test_pr_converge_bugteam_enforcer_state_tolerance.py +0 -184
- package/hooks/blocking/test_pr_description_enforcer.py +0 -221
- package/hooks/blocking/test_pr_description_enforcer_body_audit.py +0 -247
- package/hooks/blocking/test_pr_description_enforcer_body_rules.py +0 -493
- package/hooks/blocking/test_pr_description_enforcer_command_parser.py +0 -366
- package/hooks/blocking/test_pr_description_enforcer_pr_number.py +0 -159
- package/hooks/blocking/test_pr_description_enforcer_proof_gate.py +0 -175
- package/hooks/blocking/test_pr_description_enforcer_readability.py +0 -443
- package/hooks/blocking/test_pr_description_proof_of_work.py +0 -313
- package/hooks/blocking/test_reviewer_spawn_gate.py +0 -230
- package/hooks/blocking/test_verdict_directory_write_blocker.py +0 -804
- package/hooks/blocking/test_verification_verdict_store.py +0 -974
- package/hooks/blocking/test_verified_commit_config_bootstrap.py +0 -67
- package/hooks/blocking/test_verified_commit_docs_delta.py +0 -176
- package/hooks/blocking/test_verified_commit_gate.py +0 -581
- package/hooks/blocking/test_verified_commit_gate_additional_context.py +0 -134
- package/hooks/blocking/test_verified_commit_message_accuracy_blocker.py +0 -131
- package/hooks/blocking/test_verifier_verdict_minter.py +0 -299
- package/hooks/blocking/tests/test_verified_commit_gate.py +0 -41
- package/hooks/blocking/verdict_directory_write_blocker.py +0 -687
- package/hooks/blocking/verification_verdict_store.py +0 -1039
- package/hooks/blocking/verified_commit_config_bootstrap.py +0 -63
- package/hooks/blocking/verified_commit_gate.py +0 -113
- package/hooks/blocking/verified_commit_gate_parts/CLAUDE.md +0 -28
- package/hooks/blocking/verified_commit_gate_parts/__init__.py +0 -1
- package/hooks/blocking/verified_commit_gate_parts/command_tokenization.py +0 -174
- package/hooks/blocking/verified_commit_gate_parts/deny_payload.py +0 -53
- package/hooks/blocking/verified_commit_gate_parts/deny_reason.py +0 -80
- package/hooks/blocking/verified_commit_gate_parts/directory_resolution.py +0 -170
- package/hooks/blocking/verified_commit_gate_parts/gated_invocations.py +0 -217
- package/hooks/blocking/verified_commit_gate_parts/tests/conftest.py +0 -10
- package/hooks/blocking/verified_commit_gate_parts/tests/test_command_tokenization.py +0 -94
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_payload.py +0 -17
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_reason.py +0 -38
- package/hooks/blocking/verified_commit_gate_parts/tests/test_directory_resolution.py +0 -71
- package/hooks/blocking/verified_commit_gate_parts/tests/test_gated_invocations.py +0 -96
- package/hooks/blocking/verified_commit_message_accuracy_blocker.py +0 -167
- package/hooks/blocking/verifier_verdict_minter.py +0 -280
- package/hooks/hooks_constants/code_verifier_spawn_preflight_gate_constants.py +0 -64
- package/hooks/hooks_constants/convergence_gate_blocker_constants.py +0 -53
- package/hooks/hooks_constants/pr_converge_bugteam_enforcer_constants.py +0 -55
- package/hooks/hooks_constants/pr_converge_bugteam_enforcer_state.py +0 -67
- package/hooks/hooks_constants/pr_description_enforcer_constants.py +0 -167
- package/hooks/hooks_constants/pr_description_proof_of_work_constants.py +0 -107
- package/hooks/hooks_constants/reviewer_spawn_gate_constants.py +0 -41
- package/hooks/hooks_constants/test_pr_description_enforcer_constants.py +0 -292
- package/hooks/lifecycle/pr_converge_bugteam_skill_tracker.py +0 -198
- package/hooks/lifecycle/test_pr_converge_bugteam_skill_tracker.py +0 -283
- package/rules/proof-of-work-pr-comments.md +0 -22
- package/rules/verified-commit-gate-skip.md +0 -4
- package/scripts/Show-Asset.ps1 +0 -106
|
@@ -148,5 +148,5 @@ test('COMMIT_RECOVERY_MAX_ATTEMPTS is one and bounds the commitWithRecovery loop
|
|
|
148
148
|
assert.match(convergeSource, /const COMMIT_RECOVERY_MAX_ATTEMPTS = 1/, 'expected a dedicated commit-recovery cap of one');
|
|
149
149
|
assert.match(convergeSource, /const FIX_RECOVERY_MAX_ATTEMPTS = 2/, 'expected the wider verify-recovery cap to stay at two');
|
|
150
150
|
const commitBody = functionSource('commitWithRecovery');
|
|
151
|
-
assert.match(commitBody, /attempt
|
|
151
|
+
assert.match(commitBody, /attempt <= COMMIT_RECOVERY_MAX_ATTEMPTS/, 'expected commitWithRecovery to bound its loop by the dedicated cap');
|
|
152
152
|
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# bugteam
|
|
2
|
+
|
|
3
|
+
Runs an audit-fix loop on an open pull request until all findings are resolved or the 20-loop cap is reached. Triggered by `/bugteam`, `run the bug team`, `auto-fix the PR until clean`, or `loop audit and fix`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Each loop: a `code-quality-agent` (fresh context, all A–Q audit categories) produces an outcome XML; a `clean-coder` agent applies every fix; the lead commits, pushes, and posts a GitHub PR review (APPROVE on clean, REQUEST_CHANGES with inline anchored comments on dirty). Grants `.claude/**` write permissions at the start and revokes them at the end.
|
|
8
|
+
|
|
9
|
+
## Key files
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Hub — pre-flight call, refusals, the audit-posting step (runs the shared `post_audit_thread.py` helper), progress checklist, and situation-to-reference table. Read this first. |
|
|
14
|
+
| `PROMPTS.md` | Spawn XML, A–Q category bindings, outcome XML schemas. |
|
|
15
|
+
| `CONSTRAINTS.md` | Invariants — what the loop must never violate. |
|
|
16
|
+
| `EXAMPLES.md` | Exit scenarios: converged, cap-reached, stuck, refusal, mixed-outcome. |
|
|
17
|
+
| `sources.md` | Doc URLs and verbatim quotes cited in the skill body. |
|
|
18
|
+
|
|
19
|
+
## Subdirectories
|
|
20
|
+
|
|
21
|
+
| Directory | Role |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `reference/` | Expanded workflow detail loaded on demand (team setup, audit contract, GitHub PR review shape, teardown). |
|
|
24
|
+
| `scripts/` | Python scripts executed by the lead or teammates at runtime. |
|
|
25
|
+
|
|
26
|
+
## Environment controls
|
|
27
|
+
|
|
28
|
+
- `CLAUDE_REVIEWS_DISABLED=bugteam` — disables the skill entirely (pre-flight exits 7).
|
|
29
|
+
- `BUGTEAM_PREFLIGHT_SKIP=1` — skips pytest in pre-flight.
|
|
30
|
+
- `BUGTEAM_REVIEWER_ACCOUNT=<login>` — names the alternate `gh` account for posting reviews when the PR author and reviewer identity match.
|
package/skills/bugteam/CLAUDE.md
CHANGED
|
@@ -1,30 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Runs an audit-fix loop on an open pull request until all findings are resolved or the 20-loop cap is reached. Triggered by `/bugteam`, `run the bug team`, `auto-fix the PR until clean`, or `loop audit and fix`.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
Each loop: a `code-quality-agent` (fresh context, all A–Q audit categories) produces an outcome XML; a `clean-coder` agent applies every fix; the lead commits, pushes, and posts a GitHub PR review (APPROVE on clean, REQUEST_CHANGES with inline anchored comments on dirty). Grants `.claude/**` write permissions at the start and revokes them at the end.
|
|
8
|
-
|
|
9
|
-
## Key files
|
|
10
|
-
|
|
11
|
-
| File | Purpose |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `SKILL.md` | Hub — pre-flight call, refusals, the audit-posting step (runs the shared `post_audit_thread.py` helper), progress checklist, and situation-to-reference table. Read this first. |
|
|
14
|
-
| `PROMPTS.md` | Spawn XML, A–Q category bindings, outcome XML schemas. |
|
|
15
|
-
| `CONSTRAINTS.md` | Invariants — what the loop must never violate. |
|
|
16
|
-
| `EXAMPLES.md` | Exit scenarios: converged, cap-reached, stuck, refusal, mixed-outcome. |
|
|
17
|
-
| `sources.md` | Doc URLs and verbatim quotes cited in the skill body. |
|
|
18
|
-
|
|
19
|
-
## Subdirectories
|
|
20
|
-
|
|
21
|
-
| Directory | Role |
|
|
22
|
-
|---|---|
|
|
23
|
-
| `reference/` | Expanded workflow detail loaded on demand (team setup, audit contract, GitHub PR review shape, teardown). |
|
|
24
|
-
| `scripts/` | Python scripts executed by the lead or teammates at runtime. |
|
|
25
|
-
|
|
26
|
-
## Environment controls
|
|
27
|
-
|
|
28
|
-
- `CLAUDE_REVIEWS_DISABLED=bugteam` — disables the skill entirely (pre-flight exits 7).
|
|
29
|
-
- `BUGTEAM_PREFLIGHT_SKIP=1` — skips pytest in pre-flight.
|
|
30
|
-
- `BUGTEAM_REVIEWER_ACCOUNT=<login>` — names the alternate `gh` account for posting reviews when the PR author and reviewer identity match.
|
|
1
|
+
@AGENTS.md
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- **Clean-room audits, every loop.** Each bugfind subagent's spawn prompt contains only the PR scope, audit rubric, and the current loop number. Prior loop history stays in the lead.
|
|
14
14
|
- **Targeted fixes.** Each fix subagent sees ONLY the most recent audit's findings. Prior loops are invisible to the fix subagent.
|
|
15
15
|
- **Fix subagent receives the latest audit as its input contract.** Each loop's fix run operates on the current audit's output and only that.
|
|
16
|
-
- **Lead owns the final PR description
|
|
16
|
+
- **Lead owns the final PR description.** The lead applies the [description guide](../descriptions/SKILL.md#required-content) through `pr-loop-lifecycle`.
|
|
17
17
|
|
|
18
18
|
## Why this design
|
|
19
19
|
|
package/skills/bugteam/SKILL.md
CHANGED
|
@@ -29,6 +29,15 @@ and take `true` as the pass. When any check fails, run the
|
|
|
29
29
|
`pr-loop-cloud-transport` skill first and route every `gh` operation in this
|
|
30
30
|
skill through its substitution matrix.
|
|
31
31
|
|
|
32
|
+
## Judgment guides
|
|
33
|
+
|
|
34
|
+
Use the [review guide](../reviews/SKILL.md#review-workflow) to decide whether a
|
|
35
|
+
changed behavior is a finding. Use the [comment guide](../comments/SKILL.md#writing-useful-review-comments)
|
|
36
|
+
for posted findings and replies, the [description guide](../descriptions/SKILL.md#reviewing-a-description)
|
|
37
|
+
for final PR context, the [emergency guide](../emergencies/SKILL.md#while-the-incident-is-active)
|
|
38
|
+
for active incidents, and the [small-change guide](../small-cl/SKILL.md#reviewable-scope)
|
|
39
|
+
when the diff needs a narrower review boundary.
|
|
40
|
+
|
|
32
41
|
## Pre-flight
|
|
33
42
|
|
|
34
43
|
```bash
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# bugteam/reference
|
|
2
|
+
|
|
3
|
+
Expanded workflow detail for the `bugteam` skill. Load a file from this directory when the orchestration stub in `SKILL.md` is not enough — for example, when debugging GitHub review shape, understanding gate semantics, or working through teardown edge cases.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `README.md` | Index of all files in this directory with one-line domain summaries. |
|
|
10
|
+
| `team-setup.md` | Permissions grant, PR scope resolution, run name, temp dir, and loop state. |
|
|
11
|
+
| `audit-and-teammates.md` | Pre-audit CODE_RULES gate, full cycle numbering, AUDIT and FIX action detail. |
|
|
12
|
+
| `github-pr-reviews.md` | Per-loop review posting, `jq`+`gh api` payloads, inline anchors, fallbacks, REST endpoints. |
|
|
13
|
+
| `design-rationale.md` | Why clean-room subagents, when `/bugteam` applies, refusal reasons. |
|
|
14
|
+
| `copilot-gap-analysis.md` | Historical gap analysis (reference only). |
|
|
15
|
+
|
|
16
|
+
## Subdirectories
|
|
17
|
+
|
|
18
|
+
| Directory | Role |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `obstacles/` | Per-step obstacle guides — one file per common failure point (e.g., write XML, resolve thread, push, test suite). |
|
|
@@ -1,20 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Expanded workflow detail for the `bugteam` skill. Load a file from this directory when the orchestration stub in `SKILL.md` is not enough — for example, when debugging GitHub review shape, understanding gate semantics, or working through teardown edge cases.
|
|
4
|
-
|
|
5
|
-
## Key files
|
|
6
|
-
|
|
7
|
-
| File | Purpose |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `README.md` | Index of all files in this directory with one-line domain summaries. |
|
|
10
|
-
| `team-setup.md` | Permissions grant, PR scope resolution, run name, temp dir, and loop state. |
|
|
11
|
-
| `audit-and-teammates.md` | Pre-audit CODE_RULES gate, full cycle numbering, AUDIT and FIX action detail. |
|
|
12
|
-
| `github-pr-reviews.md` | Per-loop review posting, `jq`+`gh api` payloads, inline anchors, fallbacks, REST endpoints. |
|
|
13
|
-
| `design-rationale.md` | Why clean-room subagents, when `/bugteam` applies, refusal reasons. |
|
|
14
|
-
| `copilot-gap-analysis.md` | Historical gap analysis (reference only). |
|
|
15
|
-
|
|
16
|
-
## Subdirectories
|
|
17
|
-
|
|
18
|
-
| Directory | Role |
|
|
19
|
-
|---|---|
|
|
20
|
-
| `obstacles/` | Per-step obstacle guides — one file per common failure point (e.g., write XML, resolve thread, push, test suite). |
|
|
1
|
+
@AGENTS.md
|
|
@@ -104,8 +104,10 @@ Repeat until an exit condition fires.
|
|
|
104
104
|
action** below). Instructions: read the gate script’s stderr, edit the
|
|
105
105
|
repo until a **re-run** of the **same** gate command exits **0**. On
|
|
106
106
|
tiers 1 and 3 the headless worker edits and runs tests but never
|
|
107
|
-
commits or pushes — the lead stages with explicit `git add`,
|
|
108
|
-
|
|
107
|
+
commits or pushes — the lead stages with explicit `git add`, confirms the
|
|
108
|
+
gate output and changed behavior against the
|
|
109
|
+
[review guide](../../reviews/SKILL.md#review-workflow), then commits and
|
|
110
|
+
pushes. Tier 2 keeps in-agent
|
|
109
111
|
commit and push with `mode="bypassPermissions"`. Repeat standards-fix
|
|
110
112
|
spawns until the gate exits **0** or **5** failed gate rounds (each
|
|
111
113
|
round = one worker session after a non-zero gate). If still non-zero
|
|
@@ -219,8 +221,9 @@ worker session after a non-zero gate).
|
|
|
219
221
|
headless worker edits and runs tests but never commits or pushes. The
|
|
220
222
|
lead session stages the worker's files itself with an explicit `git add`
|
|
221
223
|
(the session edit tracker does not see files the lead did not edit),
|
|
222
|
-
|
|
223
|
-
|
|
224
|
+
confirms the gate output and changed behavior against the
|
|
225
|
+
[review guide](../../reviews/SKILL.md#review-workflow), then commits and
|
|
226
|
+
pushes — so the commit gate and the staged-commit scans run on the real
|
|
224
227
|
diff. Re-run the gate command; if still non-zero, start the next round.
|
|
225
228
|
- **`claude_agent_required`** (exit `2`, attempts include tier `2` with
|
|
226
229
|
that reason): spawn the Agent-tool worker with in-agent commit and push:
|
|
@@ -283,8 +286,9 @@ Pass finding comment URL, comment id, and thread node id for each finding
|
|
|
283
286
|
and 3 the headless worker edits and runs tests but never commits or
|
|
284
287
|
pushes. The lead session stages the worker's files itself with an
|
|
285
288
|
explicit `git add` (the session edit tracker does not see files the lead
|
|
286
|
-
did not edit),
|
|
287
|
-
|
|
289
|
+
did not edit), confirms the gate output and changed behavior against the
|
|
290
|
+
[review guide](../../reviews/SKILL.md#review-workflow), then commits and
|
|
291
|
+
pushes — so the commit gate and the staged-commit scans run
|
|
288
292
|
on the real diff. Read the outcome XML at
|
|
289
293
|
`<worktree_path>/.bugteam-pr<N>-loop<L>.fix-outcomes.xml`. The **lead**
|
|
290
294
|
posts one reply per finding using the unified template at
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# bugteam/reference/obstacles
|
|
2
|
+
|
|
3
|
+
Per-step obstacle guides for the `bugteam` skill. Each file addresses a specific failure point that can occur during an audit-fix loop. Load the matching file when a step fails rather than improvising a fix.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | Obstacle it addresses |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `audit-assign-ids.md` | Assigning stable finding IDs in the audit output. |
|
|
10
|
+
| `audit-capture-excerpts.md` | Capturing code excerpts for each finding. |
|
|
11
|
+
| `audit-walk-categories.md` | Walking all A–Q categories without skipping. |
|
|
12
|
+
| `audit-write-xml.md` | Writing the outcome XML from an audit pass. |
|
|
13
|
+
| `fix-append-summary.md` | Appending the fix summary to the outcome XML. |
|
|
14
|
+
| `fix-apply-fixes.md` | Applying code fixes from the finding list. |
|
|
15
|
+
| `fix-git-add-commit.md` | Staging and committing the fixed files. |
|
|
16
|
+
| `fix-git-push.md` | Pushing the fix commit to the remote branch. |
|
|
17
|
+
| `fix-post-reply.md` | Posting inline replies to finding threads on the PR. |
|
|
18
|
+
| `fix-publish-summary.md` | Publishing the loop summary to the PR. |
|
|
19
|
+
| `fix-py-compile.md` | Verifying Python syntax after fixes. |
|
|
20
|
+
| `fix-read-files.md` | Reading the files referenced in a finding. |
|
|
21
|
+
| `fix-resolve-thread.md` | Resolving a finding's review thread on GitHub. |
|
|
22
|
+
| `fix-test-suite.md` | Running the test suite and interpreting failures. |
|
|
23
|
+
| `fix-violation-count.md` | Counting open violations after a fix pass. |
|
|
24
|
+
| `fix-write-xml.md` | Writing the per-fix XML record. |
|
|
@@ -1,24 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Per-step obstacle guides for the `bugteam` skill. Each file addresses a specific failure point that can occur during an audit-fix loop. Load the matching file when a step fails rather than improvising a fix.
|
|
4
|
-
|
|
5
|
-
## Files
|
|
6
|
-
|
|
7
|
-
| File | Obstacle it addresses |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `audit-assign-ids.md` | Assigning stable finding IDs in the audit output. |
|
|
10
|
-
| `audit-capture-excerpts.md` | Capturing code excerpts for each finding. |
|
|
11
|
-
| `audit-walk-categories.md` | Walking all A–Q categories without skipping. |
|
|
12
|
-
| `audit-write-xml.md` | Writing the outcome XML from an audit pass. |
|
|
13
|
-
| `fix-append-summary.md` | Appending the fix summary to the outcome XML. |
|
|
14
|
-
| `fix-apply-fixes.md` | Applying code fixes from the finding list. |
|
|
15
|
-
| `fix-git-add-commit.md` | Staging and committing the fixed files. |
|
|
16
|
-
| `fix-git-push.md` | Pushing the fix commit to the remote branch. |
|
|
17
|
-
| `fix-post-reply.md` | Posting inline replies to finding threads on the PR. |
|
|
18
|
-
| `fix-publish-summary.md` | Publishing the loop summary to the PR. |
|
|
19
|
-
| `fix-py-compile.md` | Verifying Python syntax after fixes. |
|
|
20
|
-
| `fix-read-files.md` | Reading the files referenced in a finding. |
|
|
21
|
-
| `fix-resolve-thread.md` | Resolving a finding's review thread on GitHub. |
|
|
22
|
-
| `fix-test-suite.md` | Running the test suite and interpreting failures. |
|
|
23
|
-
| `fix-violation-count.md` | Counting open violations after a fix pass. |
|
|
24
|
-
| `fix-write-xml.md` | Writing the per-fix XML record. |
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# bugteam/scripts
|
|
2
|
+
|
|
3
|
+
Python scripts executed by the bugteam lead or teammates at runtime. These are not loaded into context as instructions — they run as subprocess calls from within the skill workflow.
|
|
4
|
+
|
|
5
|
+
## Scripts
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `bugteam_preflight.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/preflight.py`. Skips pytest when `BUGTEAM_PREFLIGHT_SKIP=1` or no test files exist. |
|
|
10
|
+
| `bugteam_fix_hookspath.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/fix_hookspath.py`. Auto-remediates a stale `core.hooksPath` override. |
|
|
11
|
+
| `bugteam_code_rules_gate.py` | Thin skill-path entry; re-exports shared `_shared/pr-loop/scripts/code_rules_gate.py` (of record). |
|
|
12
|
+
| `windows_safe_rmtree.py` | Remove a directory tree on Windows by stripping ReadOnly attributes and retrying on failure. |
|
|
13
|
+
| `probe_code_rules_enforcer_check.py` | Load `code_rules_enforcer.py` and invoke a named check function against a fixture file. |
|
|
14
|
+
| `reflow_skill_md.py` | Reflow the bugteam SKILL.md body to fit line-length limits. |
|
|
15
|
+
|
|
16
|
+
## Test files
|
|
17
|
+
|
|
18
|
+
| File | Tests |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `test_bugteam_preflight.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_preflight.py` |
|
|
21
|
+
| `test_bugteam_code_rules_gate.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_code_rules_gate.py` |
|
|
22
|
+
| `test_bugteam_fix_hookspath.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_fix_hookspath.py` |
|
|
23
|
+
| `test_probe_code_rules_enforcer_check.py` | `probe_code_rules_enforcer_check.py` |
|
|
24
|
+
| `test_windows_safe_rmtree.py` | `windows_safe_rmtree.py` |
|
|
25
|
+
|
|
26
|
+
## Subdirectories
|
|
27
|
+
|
|
28
|
+
| Directory | Role |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `bugteam_scripts_constants/` | Named constants imported by the scripts above. |
|
|
@@ -1,30 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Python scripts executed by the bugteam lead or teammates at runtime. These are not loaded into context as instructions — they run as subprocess calls from within the skill workflow.
|
|
4
|
-
|
|
5
|
-
## Scripts
|
|
6
|
-
|
|
7
|
-
| File | Purpose |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `bugteam_preflight.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/preflight.py`. Skips pytest when `BUGTEAM_PREFLIGHT_SKIP=1` or no test files exist. |
|
|
10
|
-
| `bugteam_fix_hookspath.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/fix_hookspath.py`. Auto-remediates a stale `core.hooksPath` override. |
|
|
11
|
-
| `bugteam_code_rules_gate.py` | Thin skill-path entry; re-exports shared `_shared/pr-loop/scripts/code_rules_gate.py` (of record). |
|
|
12
|
-
| `windows_safe_rmtree.py` | Remove a directory tree on Windows by stripping ReadOnly attributes and retrying on failure. |
|
|
13
|
-
| `probe_code_rules_enforcer_check.py` | Load `code_rules_enforcer.py` and invoke a named check function against a fixture file. |
|
|
14
|
-
| `reflow_skill_md.py` | Reflow the bugteam SKILL.md body to fit line-length limits. |
|
|
15
|
-
|
|
16
|
-
## Test files
|
|
17
|
-
|
|
18
|
-
| File | Tests |
|
|
19
|
-
|---|---|
|
|
20
|
-
| `test_bugteam_preflight.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_preflight.py` |
|
|
21
|
-
| `test_bugteam_code_rules_gate.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_code_rules_gate.py` |
|
|
22
|
-
| `test_bugteam_fix_hookspath.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_fix_hookspath.py` |
|
|
23
|
-
| `test_probe_code_rules_enforcer_check.py` | `probe_code_rules_enforcer_check.py` |
|
|
24
|
-
| `test_windows_safe_rmtree.py` | `windows_safe_rmtree.py` |
|
|
25
|
-
|
|
26
|
-
## Subdirectories
|
|
27
|
-
|
|
28
|
-
| Directory | Role |
|
|
29
|
-
|---|---|
|
|
30
|
-
| `bugteam_scripts_constants/` | Named constants imported by the scripts above. |
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# bugteam/scripts/bugteam_scripts_constants
|
|
2
|
+
|
|
3
|
+
Python package of named constants imported by the bugteam scripts. Each module holds the constants for one script; importing from this package keeps magic values out of the script bodies.
|
|
4
|
+
|
|
5
|
+
## Modules
|
|
6
|
+
|
|
7
|
+
| File | Constants for |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `probe_code_rules_enforcer_check_constants.py` | `probe_code_rules_enforcer_check.py` — enforcer module path and function name constants. |
|
|
10
|
+
| `reflow_skill_md_constants.py` | `reflow_skill_md.py` — line-length and formatting constants. |
|
|
11
|
+
| `windows_safe_rmtree_constants.py` | `windows_safe_rmtree.py` — retry count and wait constants. |
|
|
12
|
+
| `__init__.py` | Empty package marker. |
|
|
13
|
+
|
|
14
|
+
Preflight, fix_hookspath, and code_rules_gate constants live under package shared `pr_loop_shared_constants` with the shared implementations.
|
|
15
|
+
|
|
16
|
+
## Convention
|
|
17
|
+
|
|
18
|
+
Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Python package of named constants imported by the bugteam scripts. Each module holds the constants for one script; importing from this package keeps magic values out of the script bodies.
|
|
4
|
-
|
|
5
|
-
## Modules
|
|
6
|
-
|
|
7
|
-
| File | Constants for |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `probe_code_rules_enforcer_check_constants.py` | `probe_code_rules_enforcer_check.py` — enforcer module path and function name constants. |
|
|
10
|
-
| `reflow_skill_md_constants.py` | `reflow_skill_md.py` — line-length and formatting constants. |
|
|
11
|
-
| `windows_safe_rmtree_constants.py` | `windows_safe_rmtree.py` — retry count and wait constants. |
|
|
12
|
-
| `__init__.py` | Empty package marker. |
|
|
13
|
-
|
|
14
|
-
Preflight, fix_hookspath, and code_rules_gate constants live under package shared `pr_loop_shared_constants` with the shared implementations.
|
|
15
|
-
|
|
16
|
-
## Convention
|
|
17
|
-
|
|
18
|
-
Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
|
|
1
|
+
@AGENTS.md
|
|
@@ -18,3 +18,12 @@ def test_skill_names_implementer_subagent_type():
|
|
|
18
18
|
def test_skill_documents_bugbot_retrigger_flag():
|
|
19
19
|
skill_text = _read_skill_text()
|
|
20
20
|
assert "--bugbot-retrigger" in skill_text
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_skill_routes_judgment_to_canonical_guides() -> None:
|
|
24
|
+
skill_text = _read_skill_text()
|
|
25
|
+
assert "../reviews/SKILL.md#review-workflow" in skill_text
|
|
26
|
+
assert "../comments/SKILL.md#writing-useful-review-comments" in skill_text
|
|
27
|
+
assert "../descriptions/SKILL.md#reviewing-a-description" in skill_text
|
|
28
|
+
assert "../emergencies/SKILL.md#while-the-incident-is-active" in skill_text
|
|
29
|
+
assert "../small-cl/SKILL.md#reviewable-scope" in skill_text
|
|
@@ -55,7 +55,7 @@ Open a PR per filed issue below and drive each to convergence.
|
|
|
55
55
|
## Safety — never do these
|
|
56
56
|
- Never run, merge, deploy, or sync the claude-dev-env publish pipeline. It is live in production (publishes to npm).
|
|
57
57
|
- Never run the host repo's automations.
|
|
58
|
-
-
|
|
58
|
+
- Keep `.cursor/BUGBOT.md` aligned with the repository's review rules.
|
|
59
59
|
|
|
60
60
|
## Base branch and verification
|
|
61
61
|
- Base branch: main
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# codex-review
|
|
2
|
+
|
|
3
|
+
Runs OpenAI Codex as a local PR or uncommitted-diff reviewer: opt-out gate, version/shape probe, target pick, classifying review (`codex exec … review --json`), outcome classification, and handoff of findings into `pr-fix-protocol`. Triggered by `/codex-review`, `codex review`, `run codex review`, `babysit codex review`, or `codex as a PR reviewer`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
One Codex review pass per invocation. The skill owns sequence and skill-level classification (`down` / `clean` / `findings`). The headless wrapper is capture-only (`completed` / `codex_down` plus raw fields). Shared peers own opt-out parsing (`reviews_disabled.py` / `reviewer-gates`) and the fix sequence (`pr-fix-protocol`). Observed raw CLI surface, wrapper capture contract, probe signals, failure fixtures, auth modes, cloud runbook, and classification map live under `reference/cli-contract.md`; PR-loop wiring lives under `reference/loop-integration.md`.
|
|
8
|
+
|
|
9
|
+
## Key files
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Flow skeleton: opt-out → probe → target → wrapper → classify → fix handoff; refusals; sub-skills table; ground rules. |
|
|
14
|
+
| `reference/cli-contract.md` | Wrapper entrypoint and argv; version/shape probe; success JSONL and findings parse; failure classes tied to fixtures; auth modes; cloud runbook. |
|
|
15
|
+
| `reference/loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; re-entry after fixes. |
|
|
16
|
+
| `scripts/run_codex_review.py` | Headless capture wrapper: probes, single-target argv, JSONL capture, `completed` / `codex_down`. |
|
|
17
|
+
| `scripts/test_run_codex_review.py` | Behavioral tests for `run_codex_review`. |
|
|
18
|
+
| `scripts/codex_down_classifier.py` | Maps a Codex run's exit code and stream text to a failure detail class and the gate outcome class (`completed` / `codex_down`). |
|
|
19
|
+
| `scripts/parse_codex_findings.py` | Parses reviewer text into findings: fenced JSON first, then the freeform bullet shape, then a single floor finding. |
|
|
20
|
+
| `scripts/codex_usage_probe.py` | Weekly usage probe CLI: app-server rate-limits read, null-on-unknown JSON report. |
|
|
21
|
+
| `scripts/test_codex_usage_probe.py` | Unit tests for the weekly usage probe and gate helper. |
|
|
22
|
+
| `scripts/codex_review_scripts_constants/run_constants.py` | Named constants package for skill scripts: binary name, flags, prompt, probe pattern, timeout, exit sentinels, JSONL keys, capture outcome labels. |
|
|
23
|
+
| `scripts/codex_review_scripts_constants/codex_usage_probe_constants.py` | Named constants for the weekly usage probe. |
|
|
24
|
+
|
|
25
|
+
## Subdirectories
|
|
26
|
+
|
|
27
|
+
| Directory | Role |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `reference/` | Progressive-disclosure pages for cli-contract and loop-integration. |
|
|
30
|
+
| `scripts/` | Capture wrapper, classifier, findings parser, weekly usage probe, tests, fixtures, and constants package. |
|
|
31
|
+
|
|
32
|
+
## Environment opt-out
|
|
33
|
+
|
|
34
|
+
Step 0 runs `reviews_disabled.py --reviewer codex` before any probe or review invoke.
|
|
35
|
+
|
|
36
|
+
| Gate exit | Meaning for this skill |
|
|
37
|
+
|---|---|
|
|
38
|
+
| 0 | Opt-out active — refuse with the opt-out line in `SKILL.md` and stop |
|
|
39
|
+
| 1 | Continue the flow |
|
|
40
|
+
| Any other | Blocker — stop; do not invent an opt-out refusal |
|
|
41
|
+
|
|
42
|
+
Set `CLAUDE_REVIEWS_DISABLED=codex` to disable. This package does not re-parse `CLAUDE_REVIEWS_DISABLED`; the shared gate owns the token parse.
|
|
43
|
+
|
|
44
|
+
## Scripts surface
|
|
45
|
+
|
|
46
|
+
`scripts/` holds the capture wrapper (`run_codex_review.py`), the down classifier (`codex_down_classifier.py`), the findings parser (`parse_codex_findings.py`), the weekly usage probe (`codex_usage_probe.py`), their tests, fixtures, and named constants. The wrapper returns capture fields only (`completed` / `codex_down`); agents map those fields to skill classes via the skill-class map and parse findings through `parse_codex_findings`. Classify only from a `codex exec … review --json` JSONL stream; do not invent a non-JSONL parse.
|
|
@@ -1,46 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Runs OpenAI Codex as a local PR or uncommitted-diff reviewer: opt-out gate, version/shape probe, target pick, classifying review (`codex exec … review --json`), outcome classification, and handoff of findings into `pr-fix-protocol`. Triggered by `/codex-review`, `codex review`, `run codex review`, `babysit codex review`, or `codex as a PR reviewer`.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
One Codex review pass per invocation. The skill owns sequence and skill-level classification (`down` / `clean` / `findings`). The headless wrapper is capture-only (`completed` / `codex_down` plus raw fields). Shared peers own opt-out parsing (`reviews_disabled.py` / `reviewer-gates`) and the fix sequence (`pr-fix-protocol`). Observed raw CLI surface, wrapper capture contract, probe signals, failure fixtures, auth modes, cloud runbook, and classification map live under `reference/cli-contract.md`; PR-loop wiring lives under `reference/loop-integration.md`.
|
|
8
|
-
|
|
9
|
-
## Key files
|
|
10
|
-
|
|
11
|
-
| File | Purpose |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `SKILL.md` | Flow skeleton: opt-out → probe → target → wrapper → classify → fix handoff; refusals; sub-skills table; ground rules. |
|
|
14
|
-
| `reference/cli-contract.md` | Wrapper entrypoint and argv; version/shape probe; success JSONL and findings parse; failure classes tied to fixtures; auth modes; cloud runbook. |
|
|
15
|
-
| `reference/loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; re-entry after fixes. |
|
|
16
|
-
| `scripts/run_codex_review.py` | Headless capture wrapper: probes, single-target argv, JSONL capture, `completed` / `codex_down`. |
|
|
17
|
-
| `scripts/test_run_codex_review.py` | Behavioral tests for `run_codex_review`. |
|
|
18
|
-
| `scripts/codex_down_classifier.py` | Maps a Codex run's exit code and stream text to a failure detail class and the gate outcome class (`completed` / `codex_down`). |
|
|
19
|
-
| `scripts/parse_codex_findings.py` | Parses reviewer text into findings: fenced JSON first, then the freeform bullet shape, then a single floor finding. |
|
|
20
|
-
| `scripts/codex_usage_probe.py` | Weekly usage probe CLI: app-server rate-limits read, null-on-unknown JSON report. |
|
|
21
|
-
| `scripts/test_codex_usage_probe.py` | Unit tests for the weekly usage probe and gate helper. |
|
|
22
|
-
| `scripts/codex_review_scripts_constants/run_constants.py` | Named constants package for skill scripts: binary name, flags, prompt, probe pattern, timeout, exit sentinels, JSONL keys, capture outcome labels. |
|
|
23
|
-
| `scripts/codex_review_scripts_constants/codex_usage_probe_constants.py` | Named constants for the weekly usage probe. |
|
|
24
|
-
|
|
25
|
-
## Subdirectories
|
|
26
|
-
|
|
27
|
-
| Directory | Role |
|
|
28
|
-
|---|---|
|
|
29
|
-
| `reference/` | Progressive-disclosure pages for cli-contract and loop-integration. |
|
|
30
|
-
| `scripts/` | Capture wrapper, classifier, findings parser, weekly usage probe, tests, fixtures, and constants package. |
|
|
31
|
-
|
|
32
|
-
## Environment opt-out
|
|
33
|
-
|
|
34
|
-
Step 0 runs `reviews_disabled.py --reviewer codex` before any probe or review invoke.
|
|
35
|
-
|
|
36
|
-
| Gate exit | Meaning for this skill |
|
|
37
|
-
|---|---|
|
|
38
|
-
| 0 | Opt-out active — refuse with the opt-out line in `SKILL.md` and stop |
|
|
39
|
-
| 1 | Continue the flow |
|
|
40
|
-
| Any other | Blocker — stop; do not invent an opt-out refusal |
|
|
41
|
-
|
|
42
|
-
Set `CLAUDE_REVIEWS_DISABLED=codex` to disable. This package does not re-parse `CLAUDE_REVIEWS_DISABLED`; the shared gate owns the token parse.
|
|
43
|
-
|
|
44
|
-
## Scripts surface
|
|
45
|
-
|
|
46
|
-
`scripts/` holds the capture wrapper (`run_codex_review.py`), the down classifier (`codex_down_classifier.py`), the findings parser (`parse_codex_findings.py`), the weekly usage probe (`codex_usage_probe.py`), their tests, fixtures, and named constants. The wrapper returns capture fields only (`completed` / `codex_down`); agents map those fields to skill classes via the skill-class map and parse findings through `parse_codex_findings`. Classify only from a `codex exec … review --json` JSONL stream; do not invent a non-JSONL parse.
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# codex-review/reference
|
|
2
|
+
|
|
3
|
+
Reference pages for the `codex-review` skill. `SKILL.md` cites these files for CLI contract and PR-loop integration detail.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `cli-contract.md` | Observed Codex CLI review surface: classifying `codex exec … review --json` path, wrapper capture (`completed` / `codex_down`), probe signals, success JSONL and findings parse, fixture-backed failure classes, skill-class map (`down` / `clean` / `findings`), auth modes, and cloud runbook. |
|
|
10
|
+
| `loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; target selection; skill-class vocabulary; findings handoff; re-entry after a fix push. |
|
|
11
|
+
|
|
12
|
+
## Conventions
|
|
13
|
+
|
|
14
|
+
- Each page is the stable home for one child workstream. Cross-references from `SKILL.md` use these paths.
|
|
15
|
+
- Keep one level deep: `SKILL.md` links here; orchestrator-owned detail links out to pr-converge / autoconverge pages rather than restating them.
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Reference pages for the `codex-review` skill. `SKILL.md` cites these files for CLI contract and PR-loop integration detail.
|
|
4
|
-
|
|
5
|
-
## Key files
|
|
6
|
-
|
|
7
|
-
| File | Purpose |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `cli-contract.md` | Observed Codex CLI review surface: classifying `codex exec … review --json` path, wrapper capture (`completed` / `codex_down`), probe signals, success JSONL and findings parse, fixture-backed failure classes, skill-class map (`down` / `clean` / `findings`), auth modes, and cloud runbook. |
|
|
10
|
-
| `loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; target selection; skill-class vocabulary; findings handoff; re-entry after a fix push. |
|
|
11
|
-
|
|
12
|
-
## Conventions
|
|
13
|
-
|
|
14
|
-
- Each page is the stable home for one child workstream. Cross-references from `SKILL.md` use these paths.
|
|
15
|
-
- Keep one level deep: `SKILL.md` links here; orchestrator-owned detail links out to pr-converge / autoconverge pages rather than restating them.
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# codex-review/scripts/codex_review_scripts_constants
|
|
2
|
+
|
|
3
|
+
Python package of named constants imported by codex-review scripts. Importing from this package keeps magic values out of script bodies.
|
|
4
|
+
|
|
5
|
+
## Modules
|
|
6
|
+
|
|
7
|
+
| File | Constants for |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `__init__.py` | Package marker and package docstring. |
|
|
10
|
+
| `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, and capture outcome class labels for `run_codex_review.py`. |
|
|
11
|
+
| `findings_constants.py` | Finding field keys, fenced-JSON and freeform patterns for `parse_codex_findings.py`. |
|
|
12
|
+
| `classifier_constants.py` | Failure class names and stream markers for `codex_down_classifier.py`. |
|
|
13
|
+
| `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, JSONL capture filename and newline mode, and capture outcome class labels for `run_codex_review.py`. |
|
|
14
|
+
| `codex_usage_probe_constants.py` | The weekly-usage probe CLI: gate threshold, report JSON keys, app-server JSON-RPC surface, rate-limit field keys, weekly-window sizing, text-status parse patterns, source labels, and exit codes. |
|
|
15
|
+
|
|
16
|
+
## Convention
|
|
17
|
+
|
|
18
|
+
Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Python package of named constants imported by codex-review scripts. Importing from this package keeps magic values out of script bodies.
|
|
4
|
-
|
|
5
|
-
## Modules
|
|
6
|
-
|
|
7
|
-
| File | Constants for |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `__init__.py` | Package marker and package docstring. |
|
|
10
|
-
| `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, and capture outcome class labels for `run_codex_review.py`. |
|
|
11
|
-
| `findings_constants.py` | Finding field keys, fenced-JSON and freeform patterns for `parse_codex_findings.py`. |
|
|
12
|
-
| `classifier_constants.py` | Failure class names and stream markers for `codex_down_classifier.py`. |
|
|
13
|
-
| `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, JSONL capture filename and newline mode, and capture outcome class labels for `run_codex_review.py`. |
|
|
14
|
-
| `codex_usage_probe_constants.py` | The weekly-usage probe CLI: gate threshold, report JSON keys, app-server JSON-RPC surface, rate-limit field keys, weekly-window sizing, text-status parse patterns, source labels, and exit codes. |
|
|
15
|
-
|
|
16
|
-
## Convention
|
|
17
|
-
|
|
18
|
-
Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
|
|
1
|
+
@AGENTS.md
|
|
@@ -9,7 +9,7 @@ from pathlib import Path
|
|
|
9
9
|
|
|
10
10
|
SKILL_DIRECTORY = Path(__file__).resolve().parent
|
|
11
11
|
SKILL_PATH = SKILL_DIRECTORY / "SKILL.md"
|
|
12
|
-
PACKAGE_MAP_PATH = SKILL_DIRECTORY / "
|
|
12
|
+
PACKAGE_MAP_PATH = SKILL_DIRECTORY / "AGENTS.md"
|
|
13
13
|
REFERENCE_DIRECTORY = SKILL_DIRECTORY / "reference"
|
|
14
14
|
PACKAGE_ROOT = SKILL_DIRECTORY.parents[1]
|
|
15
15
|
PYPROJECT_PATH = PACKAGE_ROOT / "pyproject.toml"
|
|
@@ -131,7 +131,7 @@ def test_scripts_surface_names_capture_wrapper_and_constants() -> None:
|
|
|
131
131
|
skill_text = _read_skill_text()
|
|
132
132
|
package_map_text = PACKAGE_MAP_PATH.read_text(encoding="utf-8")
|
|
133
133
|
constants_map_text = (
|
|
134
|
-
SKILL_DIRECTORY / "scripts" / "codex_review_scripts_constants" / "
|
|
134
|
+
SKILL_DIRECTORY / "scripts" / "codex_review_scripts_constants" / "AGENTS.md"
|
|
135
135
|
).read_text(encoding="utf-8")
|
|
136
136
|
wrapper_path = SKILL_DIRECTORY / "scripts" / "run_codex_review.py"
|
|
137
137
|
|
|
@@ -168,7 +168,7 @@ def test_skill_body_stays_under_line_cap() -> None:
|
|
|
168
168
|
assert skill_line_count < MAXIMUM_SKILL_BODY_LINE_COUNT
|
|
169
169
|
|
|
170
170
|
|
|
171
|
-
def
|
|
171
|
+
def test_package_map_agents_md_exists() -> None:
|
|
172
172
|
package_map_text = PACKAGE_MAP_PATH.read_text(encoding="utf-8")
|
|
173
173
|
|
|
174
174
|
assert "codex-review" in package_map_text
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comments
|
|
3
|
+
description: >-
|
|
4
|
+
Draft, refine, or respond to pull-request review comments. Use when a user
|
|
5
|
+
asks to "write a review comment", "address review feedback", or "reply to a reviewer".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Review Comment Guide
|
|
9
|
+
|
|
10
|
+
## When to Use This Guide
|
|
11
|
+
|
|
12
|
+
Use this guide to draft a finding, refine its tone, reply to reviewer feedback,
|
|
13
|
+
or resolve a comment thread. Use the [review guide](../reviews/SKILL.md#review-judgment)
|
|
14
|
+
to decide whether a concern merits a finding.
|
|
15
|
+
|
|
16
|
+
## Writing Useful Review Comments
|
|
17
|
+
|
|
18
|
+
Each comment names the affected behavior, the observed concern, the relevant
|
|
19
|
+
evidence, and the expected outcome. Give the author enough context to choose an
|
|
20
|
+
effective fix.
|
|
21
|
+
|
|
22
|
+
- Use `Required` for a change that materially affects the review judgment.
|
|
23
|
+
- Use `Consider`, `Nit`, or `FYI` for improvement, polish, and context.
|
|
24
|
+
- Explain the technical rationale when the connection from evidence to outcome
|
|
25
|
+
needs context.
|
|
26
|
+
- Recognize strong decisions and completed fixes with the same specificity.
|
|
27
|
+
|
|
28
|
+
## Respectful and Actionable Feedback
|
|
29
|
+
|
|
30
|
+
Treat every contributor as capable and acting in good faith. Keep feedback
|
|
31
|
+
about the code, its behavior, and its effect on users or maintainers.
|
|
32
|
+
|
|
33
|
+
- Consolidate a disagreement into one focused exchange with the relevant
|
|
34
|
+
context and reasoning.
|
|
35
|
+
- Use proportionate language that directs attention to the required change.
|
|
36
|
+
- Respect repository tooling and established formatting conventions.
|
|
37
|
+
- Close a thread when its outcome satisfies the applicable review judgment.
|
|
38
|
+
|
|
39
|
+
## Responding to Feedback
|
|
40
|
+
|
|
41
|
+
Start with the substance of the feedback. Clarify the code, its tests, or its
|
|
42
|
+
documentation when that gives future readers the needed context.
|
|
43
|
+
|
|
44
|
+
Ask for clarification when the requested outcome remains unclear. Reply with
|
|
45
|
+
the trade-off, evidence, and proposed resolution when an alternative approach
|
|
46
|
+
better serves the stated goal.
|
|
47
|
+
|
|
48
|
+
## Resolving Pushback
|
|
49
|
+
|
|
50
|
+
Reassess a disputed finding against the repository rubric and the change's
|
|
51
|
+
evidence. Keep advocating for a material improvement when the rationale remains
|
|
52
|
+
sound, and accept an evidence-backed alternative that meets the same quality
|
|
53
|
+
goal.
|
|
54
|
+
|
|
55
|
+
Escalate to a maintainer or lead when product direction or code ownership is
|
|
56
|
+
needed. Record the resulting decision in the pull request thread.
|
|
57
|
+
|
|
58
|
+
## Related Guides
|
|
59
|
+
|
|
60
|
+
- Use [reviews](../reviews/SKILL.md#review-workflow) for substantive code
|
|
61
|
+
assessment.
|
|
62
|
+
- Use [small-cl](../small-cl/SKILL.md#responding-to-review) for author-side
|
|
63
|
+
review responses and focused follow-up work.
|
|
64
|
+
- Use [emergencies](../emergencies/SKILL.md#while-the-incident-is-active) for
|
|
65
|
+
urgent production-change communication.
|