claude-dev-env 8.15.0 → 8.16.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.
Files changed (115) hide show
  1. package/.agents/agents/test_agent_frontmatter.py +0 -72
  2. package/.agents/agents-archived/code-quality-agent.md +16 -16
  3. package/.agents/skills/_shared/end-of-run-gotcha-recommendations.md +5 -21
  4. package/.agents/skills/e-code-review/SKILL.md +1 -3
  5. package/.agents/skills/e-simplify/SKILL.md +6 -6
  6. package/.agents/skills/eli5/SKILL.md +4 -14
  7. package/.agents/skills/eli5/reference/task-seeds.md +3 -4
  8. package/.agents/skills/everything-search/SKILL.md +2 -2
  9. package/.agents/skills/fresh-branch/SKILL.md +2 -3
  10. package/.agents/skills/grok-spawn/SKILL.md +3 -8
  11. package/.agents/skills/issue-tracker/SKILL.md +4 -6
  12. package/.agents/skills/orchestrator-refresh/SKILL.md +7 -7
  13. package/.agents/skills/plugin-eval-standalone-skill/SKILL.md +3 -3
  14. package/.agents/skills/privacy-hygiene/SKILL.md +6 -10
  15. package/.agents/skills/privacy-hygiene/reference/sweep-procedure.md +1 -1
  16. package/.agents/skills/pull-request/SKILL.md +11 -14
  17. package/.agents/skills/pull-request/reference/publication-tasks.md +2 -4
  18. package/.agents/skills/recovering-codex-startup/SKILL.md +3 -6
  19. package/.agents/skills/recovering-codex-startup/reference/task-seeds.md +1 -1
  20. package/.agents/skills/repairing-hook-boundaries/SKILL.md +4 -7
  21. package/.agents/skills/repairing-hook-boundaries/reference/task-seeds.md +1 -2
  22. package/.agents/skills/second-account-workers/SKILL.md +26 -8
  23. package/.agents/skills/syncing-submodules/SKILL.md +7 -17
  24. package/.agents/skills/syncing-submodules/reference/run-tasks.md +1 -1
  25. package/.agents/skills/task-build/SKILL.md +1 -1
  26. package/.agents/skills/task-build/reference/tool-routing.md +1 -1
  27. package/.agents/skills/team-advisor/SKILL.md +2 -4
  28. package/.agents/skills/usage-pause/SKILL.md +1 -1
  29. package/.agents/skills/windows-scheduled-task/SKILL.md +1 -1
  30. package/AGENTS.md +1 -1
  31. package/_shared/advisor/advisor-protocol.md +4 -4
  32. package/_shared/advisor/reference/consult-format.md +1 -1
  33. package/_shared/advisor/reference/identity.md +2 -2
  34. package/_shared/advisor/reference/warm-up.md +1 -1
  35. package/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md +1 -1
  36. package/audit-rubrics/prompts/category-o-docstring-vs-impl-drift.md +2 -16
  37. package/bin/install.mjs +1 -0
  38. package/bin/install.prompt-context.test.mjs +7 -3
  39. package/bin/install.test.mjs +3 -2
  40. package/commands/sr-loop.md +2 -2
  41. package/docs/CODE_RULES.md +2 -2
  42. package/docs/DJANGO_PATTERNS.md +3 -3
  43. package/docs/REACT_PATTERNS.md +6 -6
  44. package/docs/TEST_QUALITY.md +10 -16
  45. package/docs/agent-spawn-protocol.md +4 -4
  46. package/docs/codex-compatibility.md +4 -33
  47. package/docs/references/team-advisor-skill.md +0 -1
  48. package/docs/worker-completion-gate.md +0 -1
  49. package/hooks/advisory/migration_safety_advisor.py +3 -2
  50. package/hooks/advisory/refactor_guard.py +3 -3
  51. package/hooks/hooks.json +1 -1
  52. package/hooks/hooks_constants/issue_tracker_session_starter_constants.py +1 -2
  53. package/hooks/hooks_constants/orchestrator_auto_starter_constants.py +1 -2
  54. package/package.json +1 -1
  55. package/rules/explore-thoroughly.md +0 -1
  56. package/rules/filesystem-search.md +1 -1
  57. package/rules/git-workflow.md +5 -5
  58. package/rules/long-horizon-autonomy.md +1 -5
  59. package/rules/re-stage-before-commit.md +0 -2
  60. package/rules/shell-invocation.md +1 -1
  61. package/scripts/claude_account_choice.py +183 -52
  62. package/scripts/claude_account_profile.py +81 -49
  63. package/scripts/claude_account_worker.py +48 -15
  64. package/scripts/dev_env_scripts_constants/claude_account_constants.py +36 -1
  65. package/scripts/dev_env_scripts_constants/claude_account_worker_constants.py +2 -0
  66. package/scripts/dev_env_scripts_constants/grok_worker_constants.py +8 -2
  67. package/scripts/policy_lint/config/constants.py +1 -0
  68. package/scripts/policy_lint/engine.py +5 -2
  69. package/scripts/repository_checks/config/constants.py +1 -1
  70. package/scripts/spawn_grok_batch.py +12 -1
  71. package/scripts/test_claude_account_choice.py +127 -17
  72. package/scripts/test_claude_account_profile.py +63 -16
  73. package/scripts/test_claude_account_worker.py +118 -0
  74. package/scripts/test_spawn_grok_batch.py +22 -0
  75. package/scripts/tests/test_banned_prose_words.py +1 -1
  76. package/scripts/tests/test_policy_lint_rules_archive.py +16 -0
  77. package/scripts/tests/test_policy_lint_rules_engine.py +2 -2
  78. package/scripts/tests/test_rules.py +9 -9
  79. package/system-prompts/software-engineer.xml +15 -30
  80. package/audit-rubrics/audit-categories.json +0 -700
  81. package/audit-rubrics/category_rubrics/category-a-api-contracts.md +0 -90
  82. package/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md +0 -36
  83. package/audit-rubrics/category_rubrics/category-c-resource-cleanup.md +0 -35
  84. package/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md +0 -35
  85. package/audit-rubrics/category_rubrics/category-e-dead-code.md +0 -40
  86. package/audit-rubrics/category_rubrics/category-f-silent-failures.md +0 -41
  87. package/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md +0 -38
  88. package/audit-rubrics/category_rubrics/category-h-security-boundaries.md +0 -40
  89. package/audit-rubrics/category_rubrics/category-i-concurrency.md +0 -38
  90. package/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md +0 -59
  91. package/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md +0 -66
  92. package/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md +0 -48
  93. package/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md +0 -44
  94. package/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md +0 -54
  95. package/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md +0 -59
  96. package/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md +0 -46
  97. package/audit-rubrics/prompts/category-a-api-contracts.md +0 -407
  98. package/audit-rubrics/prompts/category-b-selector-engine-compat.md +0 -401
  99. package/audit-rubrics/prompts/category-c-resource-cleanup.md +0 -420
  100. package/audit-rubrics/prompts/category-d-scoping-and-ordering.md +0 -414
  101. package/audit-rubrics/prompts/category-e-dead-code.md +0 -434
  102. package/audit-rubrics/prompts/category-f-silent-failures.md +0 -432
  103. package/audit-rubrics/prompts/category-g-bounds-and-overflow.md +0 -383
  104. package/audit-rubrics/prompts/category-h-security-boundaries.md +0 -423
  105. package/audit-rubrics/prompts/category-i-concurrency.md +0 -429
  106. package/audit-rubrics/prompts/category-j-code-rules-compliance.md +0 -458
  107. package/audit-rubrics/prompts/category-k-codebase-conflicts.md +0 -338
  108. package/audit-rubrics/prompts/category-l-behavior-equivalence.md +0 -131
  109. package/audit-rubrics/prompts/category-m-producer-consumer-cardinality.md +0 -129
  110. package/audit-rubrics/prompts/category-n-test-name-scenario-verifier.md +0 -139
  111. package/audit-rubrics/prompts/category-p-name-vs-behavior-contract.md +0 -89
  112. package/audit-rubrics/prompts/category-q-cross-surface-claims.md +0 -51
  113. package/hooks/hooks_constants/style_reminder_prompt_constants.py +0 -9
  114. package/hooks/session/style_reminder_prompt.py +0 -55
  115. package/hooks/session/test_style_reminder_prompt.py +0 -86
@@ -518,76 +518,6 @@ EXPECTED_SOURCE_LINK_PAIRS = {
518
518
  "packages/claude-dev-env/rules/workers-done-before-complete.md",
519
519
  ),
520
520
  }),
521
- "code-quality-agent.md": frozenset({
522
- (
523
- "<managed-root>/audit-rubrics/category_rubrics/category-a-api-contracts.md",
524
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-a-api-contracts.md",
525
- ),
526
- (
527
- "<managed-root>/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md",
528
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md",
529
- ),
530
- (
531
- "<managed-root>/audit-rubrics/category_rubrics/category-c-resource-cleanup.md",
532
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-c-resource-cleanup.md",
533
- ),
534
- (
535
- "<managed-root>/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md",
536
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md",
537
- ),
538
- (
539
- "<managed-root>/audit-rubrics/category_rubrics/category-e-dead-code.md",
540
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-e-dead-code.md",
541
- ),
542
- (
543
- "<managed-root>/audit-rubrics/category_rubrics/category-f-silent-failures.md",
544
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-f-silent-failures.md",
545
- ),
546
- (
547
- "<managed-root>/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md",
548
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md",
549
- ),
550
- (
551
- "<managed-root>/audit-rubrics/category_rubrics/category-h-security-boundaries.md",
552
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-h-security-boundaries.md",
553
- ),
554
- (
555
- "<managed-root>/audit-rubrics/category_rubrics/category-i-concurrency.md",
556
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-i-concurrency.md",
557
- ),
558
- (
559
- "<managed-root>/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md",
560
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md",
561
- ),
562
- (
563
- "<managed-root>/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md",
564
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md",
565
- ),
566
- (
567
- "<managed-root>/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md",
568
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md",
569
- ),
570
- (
571
- "<managed-root>/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md",
572
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md",
573
- ),
574
- (
575
- "<managed-root>/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md",
576
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md",
577
- ),
578
- (
579
- "<managed-root>/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md",
580
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md",
581
- ),
582
- (
583
- "<managed-root>/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md",
584
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md",
585
- ),
586
- (
587
- "<managed-root>/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md",
588
- "packages/claude-dev-env/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md",
589
- ),
590
- }),
591
521
  "pr-description-writer.md": frozenset({
592
522
  (
593
523
  "<agents-home>/agents/reference/pr-description-illustrative-voice.md",
@@ -627,7 +557,6 @@ def test_named_agents_document_installed_paths_and_source_fallbacks() -> None:
627
557
  agents_directory = Path(__file__).parent.parent / "agents-archived"
628
558
  for each_agent_file_name in (
629
559
  "clean-coder.md",
630
- "code-quality-agent.md",
631
560
  "pr-description-writer.md",
632
561
  ):
633
562
  agent_text = (agents_directory / each_agent_file_name).read_text(
@@ -690,7 +619,6 @@ def test_named_agents_resolve_active_managed_root_and_agents_home() -> None:
690
619
  agents_directory = Path(__file__).parent.parent / "agents-archived"
691
620
  for each_agent_file_name in (
692
621
  "clean-coder.md",
693
- "code-quality-agent.md",
694
622
  "pr-description-writer.md",
695
623
  ):
696
624
  agent_text = (agents_directory / each_agent_file_name).read_text(
@@ -77,23 +77,23 @@ For each category's full description, examples, sub-bucket decomposition, and co
77
77
 
78
78
  | Letter | Category | Reference file |
79
79
  |---|---|---|
80
- | A | API contract verification | `<managed-root>/audit-rubrics/category_rubrics/category-a-api-contracts.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-a-api-contracts.md`) |
81
- | B | Selector / query / engine compatibility | `<managed-root>/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md`) |
82
- | C | Resource cleanup and lifecycle | `<managed-root>/audit-rubrics/category_rubrics/category-c-resource-cleanup.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-c-resource-cleanup.md`) |
83
- | D | Variable scoping, ordering, and unbound references | `<managed-root>/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md`) |
84
- | E | Dead code and unused imports | `<managed-root>/audit-rubrics/category_rubrics/category-e-dead-code.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-e-dead-code.md`) |
85
- | F | Silent failures | `<managed-root>/audit-rubrics/category_rubrics/category-f-silent-failures.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-f-silent-failures.md`) |
86
- | G | Off-by-one, bounds, integer overflow | `<managed-root>/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md`) |
87
- | H | Security boundaries | `<managed-root>/audit-rubrics/category_rubrics/category-h-security-boundaries.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-h-security-boundaries.md`) |
88
- | I | Concurrency hazards | `<managed-root>/audit-rubrics/category_rubrics/category-i-concurrency.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-i-concurrency.md`) |
89
- | J | CODE_RULES.md compliance | `<managed-root>/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md`) |
90
- | K | Codebase conflicts (incomplete propagation) | `<managed-root>/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md`) |
91
- | L | Behavior-equivalence for refactors | `<managed-root>/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md`) |
92
- | M | Producer/consumer cardinality vs collection-type contract | `<managed-root>/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md`) |
93
- | N | Test-name scenario verifier | `<managed-root>/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md`) |
80
+ | A | API contract verification | `<managed-root>/audit-rubrics/category_rubrics/category-a-api-contracts.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-a-api-contracts.md`) |
81
+ | B | Selector / query / engine compatibility | `<managed-root>/audit-rubrics/category_rubrics/category-b-selector-engine-compat.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-b-selector-engine-compat.md`) |
82
+ | C | Resource cleanup and lifecycle | `<managed-root>/audit-rubrics/category_rubrics/category-c-resource-cleanup.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-c-resource-cleanup.md`) |
83
+ | D | Variable scoping, ordering, and unbound references | `<managed-root>/audit-rubrics/category_rubrics/category-d-scoping-and-ordering.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-d-scoping-and-ordering.md`) |
84
+ | E | Dead code and unused imports | `<managed-root>/audit-rubrics/category_rubrics/category-e-dead-code.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-e-dead-code.md`) |
85
+ | F | Silent failures | `<managed-root>/audit-rubrics/category_rubrics/category-f-silent-failures.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-f-silent-failures.md`) |
86
+ | G | Off-by-one, bounds, integer overflow | `<managed-root>/audit-rubrics/category_rubrics/category-g-bounds-and-overflow.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-g-bounds-and-overflow.md`) |
87
+ | H | Security boundaries | `<managed-root>/audit-rubrics/category_rubrics/category-h-security-boundaries.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-h-security-boundaries.md`) |
88
+ | I | Concurrency hazards | `<managed-root>/audit-rubrics/category_rubrics/category-i-concurrency.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-i-concurrency.md`) |
89
+ | J | CODE_RULES.md compliance | `<managed-root>/audit-rubrics/category_rubrics/category-j-code-rules-compliance.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-j-code-rules-compliance.md`) |
90
+ | K | Codebase conflicts (incomplete propagation) | `<managed-root>/audit-rubrics/category_rubrics/category-k-codebase-conflicts.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-k-codebase-conflicts.md`) |
91
+ | L | Behavior-equivalence for refactors | `<managed-root>/audit-rubrics/category_rubrics/category-l-behavior-equivalence.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-l-behavior-equivalence.md`) |
92
+ | M | Producer/consumer cardinality vs collection-type contract | `<managed-root>/audit-rubrics/category_rubrics/category-m-producer-consumer-cardinality.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-m-producer-consumer-cardinality.md`) |
93
+ | N | Test-name scenario verifier | `<managed-root>/audit-rubrics/category_rubrics/category-n-test-name-scenario-verifier.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-n-test-name-scenario-verifier.md`) |
94
94
  | O | Docstring / fixture-prose vs implementation drift | `<managed-root>/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md`) |
95
- | P | Name / regex / word-list vs behavior-contract precision | `<managed-root>/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md`) |
96
- | Q | Cross-surface claim consistency (terminology, PR-description claims, message-vs-guard) | `<managed-root>/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md` (source fallback: `packages/claude-dev-env/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md`) |
95
+ | P | Name / regex / word-list vs behavior-contract precision | `<managed-root>/audit-rubrics/category_rubrics/category-p-name-vs-behavior-contract.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-p-name-vs-behavior-contract.md`) |
96
+ | Q | Cross-surface claim consistency (terminology, PR-description claims, message-vs-guard) | `<managed-root>/audit-rubrics/category_rubrics/category-q-cross-surface-claims.md` (source fallback: `packages/claude-dev-env/audit-rubrics-archived/category_rubrics/category-q-cross-surface-claims.md`) |
97
97
 
98
98
  Test files use the same no-new-comment policy. The exempt path families documented in the J reference still opt out of the constants-location sub-item.
99
99
 
@@ -25,11 +25,11 @@ Keep only items that **bit this run**:
25
25
 
26
26
  ## What to produce
27
27
 
28
- **Order (hard):**
28
+ **Order:**
29
29
 
30
30
  1. Show findings in chat; categorize as P0-P3.
31
31
  2. Then `AskUserQuestion`.
32
- 3. On confirm only, ask `pstack:poteto-agent` to load `issue-tracker` and file the issue.
32
+ 3. On confirm only, load `issue-tracker` and file the issue.
33
33
 
34
34
  ### Cold-reader frame
35
35
 
@@ -42,7 +42,7 @@ Assume zero context.
42
42
 
43
43
  ### 1. Chat findings (always first)
44
44
 
45
- #### Sentence law (HARD)
45
+ #### Sentence law
46
46
 
47
47
  | Rule | Required |
48
48
  |---|---|
@@ -53,11 +53,7 @@ Assume zero context.
53
53
  | **One idea** | If you can split it, split it |
54
54
  | **Heavy detail** | Prefer an **ASCII infographic** over a stack of sentences |
55
55
 
56
- **Self-check before send:** paste the chat into a viewer that collapses soft breaks.
57
-
58
- If two periods appear on one visual line, **split or diagram**.
59
-
60
- #### Per gotcha (HARD shape)
56
+ #### Per gotcha shape
61
57
 
62
58
  | Part | Form |
63
59
  |---|---|
@@ -126,24 +122,12 @@ Only after the chat block.
126
122
 
127
123
  Detail and ASCII stay in chat.
128
124
 
129
- **On confirm:** ask `pstack:poteto-agent` to load `issue-tracker` and file the issue.
125
+ **On confirm:** load `issue-tracker` and file the issue.
130
126
 
131
127
  Cold-reader issue body.
132
128
 
133
129
  Clean run: skip.
134
130
 
135
- ## Built-in skill gotcha
136
-
137
- **Two sentences on one rendered line.**
138
-
139
- Markdown soft-breaks join prose.
140
-
141
- Review the close-out before send.
142
-
143
- Split with a blank line or a list item.
144
-
145
- Or move the detail into an ASCII infographic.
146
-
147
131
  ## Rules
148
132
 
149
133
  - Cold-reader first.
@@ -3,9 +3,7 @@ name: e-code-review
3
3
  description: >-
4
4
  Code review at one of five effort levels that match the built-in
5
5
  /code-review recipes step for step: low, medium, high, xhigh, max.
6
- Triggers: /e-code-review, /e-code-review low, /e-code-review medium,
7
- /e-code-review high, /e-code-review xhigh, /e-code-review max, and any
8
- level with --fix.
6
+ Triggers: /e-code-review with an optional level and an optional --fix.
9
7
  ---
10
8
 
11
9
  # e-code-review
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # e-simplify
10
10
 
11
- **Core principle:** Four parallel cleanup angles (reuse, simplification, efficiency, altitude) over the current diff, applied directly — not a bug hunt, and not a report.
11
+ **Core principle:** Four cleanup angles (reuse, simplification, efficiency, altitude) over the current diff, applied directly — not a bug hunt, and not a report.
12
12
 
13
13
  ## Gotchas
14
14
 
@@ -25,7 +25,7 @@ Triggers: `/e-simplify` on the current diff (or a PR/branch/path passed as an ar
25
25
 
26
26
  ## The process
27
27
 
28
- `/simplify → up to 4 cleanup agents in parallel → apply the fixes`
28
+ `/simplify → 4 cleanup angles in this context → apply the fixes`
29
29
 
30
30
  You are improving the quality of the changed code, not hunting for bugs. Review
31
31
  it for reuse, simplification, efficiency, and altitude issues, then fix what you
@@ -40,10 +40,10 @@ include the working-tree changes in scope — the review often runs before the
40
40
  commit. If a PR number, branch name, or file path was passed as an argument,
41
41
  review that target instead. Treat this diff as the review scope.
42
42
 
43
- ### Phase 1 — Review (up to 4 cleanup agents in parallel)
43
+ ### Phase 1 — Review (four cleanup angles, in this context)
44
44
 
45
- Launch all four review agents via the Agent tool in one message so they run concurrently. Pass each agent the diff and one angle below. Each
46
- returns its findings with `file`, `line`, a one-line `summary`, and the
45
+ Run the four angles below yourself, in sequence, in this context. Each angle
46
+ yields findings with `file`, `line`, a one-line `summary`, and the
47
47
  concrete cost (what is duplicated, wasted, or harder to maintain).
48
48
 
49
49
  #### Reuse
@@ -77,7 +77,7 @@ special cases.
77
77
 
78
78
  ### Phase 2 — Apply the fixes
79
79
 
80
- Wait for every launched agent to complete, dedup findings that point at the same
80
+ Pool the findings from all four angles, dedup findings that point at the same
81
81
  line or mechanism, and fix each remaining one directly. Skip any finding whose
82
82
  fix would change intended behavior, require changes well outside the reviewed
83
83
  diff, or that you judge to be a false positive — note the skip rather than
@@ -39,11 +39,6 @@ capability-specific artifact. Raw tool output, machine payloads, code, and
39
39
  native repository artifacts retain their required formats. Present their human
40
40
  explanation inside the HTML presentation envelope when the response is user-facing.
41
41
 
42
- ### First-match refusal condition
43
-
44
- Evaluate this condition before task seeding. When no task tool is available,
45
- reply exactly: `ELI5 requires a session task tool. The artifact flow is paused.`
46
-
47
42
  ## Skill classification
48
43
 
49
44
  **Dominant type:** Business Process & Team Automation.
@@ -83,11 +78,9 @@ keep ownership of their native artifact rules while ELI5 supplies the global
83
78
 
84
79
  ## Task seeding
85
80
 
86
- At skill start, register every item in `reference/task-seeds.md` as a session
87
- task through `TaskCreate`, `TodoWrite`, or the host task equivalent. Work from
88
- that task list. Mark each item complete with `PASS`, `FAIL` plus file evidence,
89
- or `N/A` plus the reason. When no task tool is available, use the exact refusal
90
- under [When this applies](#when-this-applies) before authoring the artifact.
81
+ When the session exposes a task tool, register the items in
82
+ `reference/task-seeds.md` as session tasks. Otherwise work through the
83
+ Process steps in order.
91
84
 
92
85
  ## Process
93
86
 
@@ -99,10 +92,7 @@ under [When this applies](#when-this-applies) before authoring the artifact.
99
92
  `~/.claude/rules/asd-ste100-language.md` to every sentence. Frame the topic
100
93
  for a beginner, use a large useful visual, keep the text minimal, and update
101
94
  the same artifact in place.
102
- 3. **Judgment — share the updated artifact with the user.** Review technical meaning,
103
- terminology, safety, confidentiality, accessibility, browser readiness, and
104
- visual legibility. When a check reports a defect, repair the artifact, repeat
105
- the review, and share after all checks pass.
95
+ 3. **Judgment — share the updated artifact with the user.**
106
96
 
107
97
  ### Examples
108
98
 
@@ -1,11 +1,10 @@
1
1
  # ELI5 task seeds
2
2
 
3
- Register each item as a session task at the start of the ELI5 process. Complete
4
- each task with `PASS`, `FAIL` plus file evidence, or `N/A` plus the reason.
3
+ When the session exposes a task tool, register each item as a session task at
4
+ the start of the ELI5 process.
5
5
 
6
6
  1. Resolve the active HTML artifact path and preserve the stable path.
7
7
  2. Create the artifact when no active path exists and keep it self-contained.
8
8
  3. Apply the ASD-STE100 rule to page and response sentences.
9
9
  4. Add the concise beginner explanation and useful large visual in place.
10
- 5. Review accuracy, terminology, safety, confidentiality, accessibility, and legibility.
11
- 6. Share the updated artifact with the user.
10
+ 5. Share the updated artifact with the user.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: everything-search
3
- description: Fast file search on Windows using Everything (voidtools) es.exe command-line tool. Use when searching for files by extension, name, date modified, size, or path. Triggers on "find files", "search for files", "locate files", or when user asks to use Everything.
3
+ description: Fast file search on Windows using Everything (voidtools) es.exe command-line tool. Use when searching for files by extension, name, date modified, size, or path, or when the user asks to use Everything.
4
4
  ---
5
5
 
6
6
  # Everything Search
@@ -43,7 +43,7 @@ Path and operator searches run when the registry file is missing. Malformed regi
43
43
  **Path (Windows):** `"C:/Program Files/Everything/es.exe"`
44
44
 
45
45
  Syntax:
46
- - Search terms are SPACE-SEPARATED, not quoted together
46
+ - Separate search terms with spaces. Quotes hold one exact filename or path; a quoted group of terms breaks parsing.
47
47
  - When searching a path, use backslashes inside quotes: `"Y:\\path\\to\\folder"`
48
48
 
49
49
  ```bash
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  name: fresh-branch
3
3
  description: >-
4
- Fresh git branch from origin/main in an isolated worktree under a configured root (default: <repo>/.claude/worktrees/<agent>/; never checkout -b in the caller tree).
5
- Triggers: fresh branch, new branch from main, /fresh-branch, start fresh, clean branch off main,
6
- worktree branch, branch in temp.
4
+ Fresh git branch from origin/main in an isolated worktree under a configured root, leaving the caller's tree untouched.
5
+ Use when the user or a calling skill needs a new branch off main.
7
6
  ---
8
7
 
9
8
  # fresh-branch
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  name: grok-spawn
3
3
  description: >-
4
- Spawn headless grok worker fleets via preflight and spawn_grok_batch.
5
- Triggers: /grok-spawn, spawn grok workers, grok worker fleet, run this with
6
- grok workers, headless grok batch.
4
+ Spawn headless grok worker fleets via preflight and spawn_grok_batch. Use
5
+ when the user asks to run work on a fleet or batch of headless grok workers.
7
6
  ---
8
7
 
9
8
  # Grok Spawn
@@ -46,8 +45,6 @@ Good fits:
46
45
  - Claude-only tools (Agent tool, warm advisor, Claude MCP surfaces the
47
46
  grok CLI does not load the same way)
48
47
 
49
- For a single interactive Grok Build handoff paste, use `/grokify` instead.
50
-
51
48
  **Refusal:** no concrete worker tasks — reply `What should the grok workers do?
52
49
  List each role in one line.` and stop.
53
50
 
@@ -220,8 +217,6 @@ Build workers stop at stage-ready edits and a written report. They do not run
220
217
  | `spawn_grok_batch.py` | Batch launch, stagger, report collect |
221
218
  | `grok_headless_runner.py` | One-worker runner (called by the batch launcher) |
222
219
 
223
- Sibling skill: `/grokify` for a single paste-ready interactive Grok Build handoff.
224
-
225
220
  ## File index
226
221
 
227
222
  | File | Purpose |
@@ -238,4 +233,4 @@ Sibling skill: `/grokify` for a single paste-ready interactive Grok Build handof
238
233
 
239
234
  ## Worker advisors
240
235
 
241
- Each grok worker binds a unique Opus-high dvisor_session_id through the lead-supplied dvisor.launcher in the batch spec (committed default is a placeholder). Reports require the same handle\'s ENDORSE (or bounded CORRECTION/PLAN then ENDORSE); STOP or malformed signals end as advisor_blocked.
236
+ Each grok worker binds a unique Opus-high `advisor_session_id` through the lead-supplied `advisor.launcher` in the batch spec (the committed default is a placeholder). Reports require the same handle's ENDORSE (or bounded CORRECTION/PLAN then ENDORSE); STOP or malformed signals end as `advisor_blocked`.
@@ -1,11 +1,9 @@
1
1
  ---
2
2
  name: issue-tracker
3
3
  description: >-
4
- File, update, and close GitHub work as one epic with native sub-issues.
5
- Dedup open and closed issues first. Edit status only inside marker sections.
6
- Refresh the epic checklist so it matches its children. Triggers: issue tracker,
7
- file an issue, track this issue, open an epic, update the epic, close the issue,
8
- refresh the epic checklist, attach a sub-issue.
4
+ File, update, and close GitHub work as one epic with native sub-issues. Use
5
+ when the user asks to file, track, update, or close a GitHub issue, or to open,
6
+ update, or refresh an epic and its sub-issues.
9
7
  argument-hint: "[issue action - file | update | close | refresh-epic | full handoff]"
10
8
  ---
11
9
 
@@ -15,7 +13,7 @@ argument-hint: "[issue action - file | update | close | refresh-epic | full hand
15
13
 
16
14
  **dedup -> do the work -> markers only -> numbers + URLs**
17
15
 
18
- Run every step the ask needs in one go (file, label, attach, refresh, and so on). `pstack:poteto-agent` is the primary handler for one action per turn when it loads this skill; this skill is the session path when the agent is unavailable or the ask spans several steps.
16
+ Run every step the ask needs in one go (file, label, attach, refresh, and so on).
19
17
 
20
18
  Prefer the **same warm** `pstack:poteto-agent` for follow-ups on the same issue or a related issue on the same epic. Spawn a new agent only for an unrelated work-stream or when the warm agent is gone.
21
19
 
@@ -1,11 +1,9 @@
1
1
  ---
2
2
  name: orchestrator-refresh
3
3
  description: >-
4
- Re-assert orchestrator discipline on a one-shot delayed wake: ledger
5
- reconcile, executor consult routing to this session, warm executor
6
- reuse, single-pending re-arm via status_gate. Terminates when the
7
- gate says stop. Triggers: '/orchestrator-refresh', orchestrator-refresh,
8
- refresh the orchestrator loop, re-arm orchestrator.
4
+ Refresh a running orchestrator loop when its one-shot delayed wake fires,
5
+ or when the user asks to refresh or re-arm the orchestrator. Terminates
6
+ when the status gate says stop.
9
7
  ---
10
8
 
11
9
  # Orchestrator Refresh
@@ -65,13 +63,15 @@ reports and adds nothing further.
65
63
 
66
64
  ## Discipline steps
67
65
 
68
- 1. **Reconcile the task ledger first.** Call `TaskList` after the gate.
66
+ 1. **Reconcile the task ledger first.** Read the ledger after the gate.
67
+ Use `TaskList` when the host exposes task tools, and the file-backed
68
+ `scripts/grok_run_ledger.py` ledger the orchestrator skill names otherwise.
69
69
  The ledger is stale when any of these holds: a running or finished
70
70
  executor has no `in_progress` task naming it as owner; a finished
71
71
  executor's task is still open (or was closed without its result
72
72
  merged); the next phase you will dispatch has no pending task; a
73
73
  `blockedBy` link contradicts the run order. Fix every mismatch
74
- with TaskCreate / TaskUpdate in this same firing — never defer.
74
+ in that same ledger during this firing.
75
75
  2. **You are the orchestrator.** Orchestrate and hold the user
76
76
  conversation; spawn executor subagents for every code edit and build
77
77
  or test run.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plugin-eval-standalone-skill
3
3
  description: >-
4
- Run `claude plugin eval` against a standalone skill that is not a plugin, by wrapping the skill in a plugin folder, writing trigger and must-not-trigger cases, and reading the with-skill minus without-skill delta. Triggers: eval a skill, plugin eval, claude plugin eval, test my skill, skill eval, eval a standalone skill.
4
+ Run `claude plugin eval` against a standalone skill that is not a plugin, by wrapping the skill in a plugin folder, writing trigger and must-not-trigger cases, and reading the with-skill minus without-skill delta. Use when the user asks to eval or test a skill.
5
5
  ---
6
6
 
7
7
  # Plugin eval for a standalone skill
@@ -54,8 +54,8 @@ behavior. It needs Claude Code 2.1.269 or later. Source doc: https://code.claude
54
54
 
55
55
  ## Process
56
56
 
57
- Register one session task per numbered step through the host task tool. Use `TaskCreate`, else
58
- `TodoWrite`. Where the host has no task tool, say so and work the steps in order.
57
+ When the host exposes a task tool, register one session task per numbered step.
58
+ Otherwise work the steps in order.
59
59
 
60
60
  1. Run `claude --version` and confirm 2.1.269 or later.
61
61
  2. Create the wrapper folder outside every skills directory:
@@ -1,20 +1,20 @@
1
1
  ---
2
2
  name: privacy-hygiene
3
- description: Full-repo sweep for personal data and secrets before commit or durable GitHub post. Use when preparing a PR or cleaning a leak. Triggers on "privacy hygiene", "personal data", "secret sweep", "sanitize repository", "/privacy-hygiene".
3
+ description: Full-repo sweep for personal data and secrets before commit or durable GitHub post. Use when preparing a PR, cleaning a leak, or when the user asks for a privacy or secret sweep of a repository.
4
4
  ---
5
5
 
6
6
  # privacy-hygiene
7
7
 
8
8
  ## Overview
9
9
 
10
- Find and remove personal data and high-confidence secrets before they land in git history or a durable GitHub post. No write-time hook scans for these; `pii_prevention_blocker` was retired. This skill is the sweep.
10
+ Find and remove personal data and high-confidence secrets before they land in git history or a durable GitHub post. No write-time hook scans for these. This skill is the sweep.
11
11
 
12
12
  **Announce at start:** "Running privacy-hygiene sweep."
13
13
 
14
14
  ## When to run a full sweep
15
15
 
16
16
  - Before the first push of a branch that touched logs, screenshots, config samples, or machine-local paths
17
- - After a hook block on email, home path, LAN address, or secret material
17
+ - After a `tracked-secrets` or gitleaks finding on email, home path, LAN address, or secret material
18
18
  - Before opening a PR to a repository that is public (or will be made public)
19
19
  - After pasting support tickets, env dumps, or terminal transcripts into the tree
20
20
 
@@ -29,10 +29,8 @@ Find and remove personal data and high-confidence secrets before they land in gi
29
29
 
30
30
  Surfaces:
31
31
 
32
- 1. **Write / Edit / MultiEdit** — payload text about to land on disk (via PreToolUse dispatcher)
33
- 2. **Durable posts** — `gh pr/issue create|comment|edit|review` bodies and GitHub MCP body/comment fields (Bash and PowerShell)
34
- 3. **git commit** — staged blob text (non-exempt paths) on Bash and PowerShell, including `git.exe` and flag forms (`--no-verify`, `-c`, `-C`). Commit message bodies (`-m` / `-F`) are out of scope for the automated gate
35
- 4. **CI** — the `committed-tree` job in `.github/workflows/ci-tests.yml` runs [gitleaks](https://github.com/gitleaks/gitleaks) over every commit the pull request adds, test files included. The repository-root `.gitleaks.toml` adds three rules to the gitleaks defaults: a user folder path that names a person, an RFC 1918 address, and an email other than a noreply or example address. To clear a fixture that must stay, add its gitleaks fingerprint to `.gitleaksignore`
32
+ 1. **Committed tree.** `scripts/repository_policy.py` runs its `tracked-secrets` check over every tracked file with this scanner, and CI runs the same command
33
+ 2. **CI** — the `committed-tree` job in `.github/workflows/ci-tests.yml` runs [gitleaks](https://github.com/gitleaks/gitleaks) over every commit the pull request adds, test files included. The repository-root `.gitleaks.toml` adds three rules to the gitleaks defaults: a user folder path that names a person, an RFC 1918 address, and an email other than a noreply or example address. To clear a fixture that must stay, add its gitleaks fingerprint to `.gitleaksignore`
36
34
 
37
35
  ## Sweep procedure
38
36
 
@@ -52,17 +50,15 @@ cd packages/claude-dev-env
52
50
  node bin/install.mjs
53
51
  ```
54
52
 
55
- Hooks register via `hooks/hooks.json` into `~/.claude/settings.json`. Once installed, the same gates apply in every repository the agent touches — private or public.
53
+ Once installed, this skill is available in every repository the agent touches, private or public. No installed hook scans a write, a commit, or a post.
56
54
 
57
55
  ## Open knobs
58
56
 
59
57
  - **NAS / LAN allowlist:** Unlisted private IPs are blocked. The scanner resolves your NAS host from `CLAUDE_NAS_HOST`, then `~/.claude/local-identity.json` (`nas.host`), and allowlists it when it is a private address, so the committed tree holds no host address. `ALL_ALLOWLISTED_PRIVATE_IP_ADDRESSES` in `hooks_constants` holds the static allowlist for any host every machine must share.
60
- - **Commit-scan exempt repositories:** named owner/repo slugs skip the staged-commit PII scan only. Set `CLAUDE_PII_EXEMPT_REPOS` (comma-separated `owner/repo` values) or list them under `pii_exempt_repositories` in `~/.claude/local-identity.json`. Matching uses the repository's `remote.origin.url` and accepts only the exact host `github.com` (https, ssh scheme, or scp-style). A repository with no readable origin is never exempt (fail-closed to scanning). Write / Edit / MultiEdit and durable post bodies still scan in every repository.
61
58
  - **Public maintainer identity:** when an email or name is intentional product surface, keep it and note that in the PR body so reviewers do not treat it as a leak.
62
59
 
63
60
  ## What this skill does not do
64
61
 
65
62
  - Does not rewrite git history without explicit user approval
66
63
  - Does not rotate credentials for you
67
- - Does not replace the write-time hook — it complements it
68
64
  - Does not scan commit-message text (`-m` / `-F`); keep messages free of secrets yourself
@@ -49,7 +49,7 @@ Review each hit. Ignore:
49
49
 
50
50
  - Stage only clean files
51
51
  - Prefer `--body-file` for `gh` posts (also required by the gh-cli-conventions rule)
52
- - No hook re-scans the next Write, commit, or post; `pii_prevention_blocker` was retired. Re-run this sweep before the next commit or post.
52
+ - No hook re-scans the next Write, commit, or post. Re-run this sweep before the next commit or post.
53
53
 
54
54
  ## Accepted residual (do not over-scrub)
55
55
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: pull-request
3
3
  description: >-
4
- Validate and publish GitHub pull request actions. Triggers: create PR, open
5
- pull request, edit PR, update PR body, comment on PR, review PR, publish a
6
- draft PR, scoped GitHub author.
4
+ Validate and publish GitHub pull request actions. Use when the user asks to
5
+ create, edit, comment on, or review a pull request, including under a
6
+ selected GitHub author.
7
7
  ---
8
8
 
9
9
  # Pull request
@@ -38,9 +38,9 @@ Use this skill for one pull request action:
38
38
  - Submit a pull request review.
39
39
  - Recover one selected legacy author record before the action.
40
40
 
41
- Send issue create, edit, and comment work to `pstack:poteto-agent` with the
42
- `issue-tracker` skill and one action. Send review and fix-loop work to
43
- `e-code-review`. Send commits to `source-command-commit`.
41
+ Send issue create, edit, and comment work to the `issue-tracker` skill, one
42
+ action at a time. Send review and fix-loop work to `e-code-review`. Make
43
+ commits and pushes with Git directly.
44
44
 
45
45
  Require one repository and one action target. Stop before author lookup or
46
46
  network work when the repository, pull request, action, author, or required
@@ -49,7 +49,7 @@ local file is missing or ambiguous.
49
49
  Use these exact refusal responses when the request belongs to another skill:
50
50
 
51
51
  - Issue action: `Use issue-tracker for this GitHub issue action.`
52
- - Commit or push: `Use source-command-commit for this commit or push.`
52
+ - Commit or push: `Use Git directly for this commit or push.`
53
53
  - Missing target: `Provide one repository and one pull request action target.`
54
54
 
55
55
  ## Constraints
@@ -76,17 +76,14 @@ current process environment.
76
76
  |---|---|---|---|
77
77
  | `pstack:poteto-agent` with `pull-request` instructions | Create or a full body rewrite, when you want the body drafted for you | A reviewed title and body file | Write the title and body yourself |
78
78
  | `privacy-hygiene` | Before any durable GitHub post | A clean body and repository privacy sweep | Stop before publication and report the missing gate |
79
- | `pstack:poteto-agent` with `issue-tracker` | Issue create, edit, or comment requests | Issue state and issue URLs | Load the skill in this session. |
79
+ | `issue-tracker` | Issue create, edit, or comment requests | Issue state and issue URLs | Route the request there. |
80
80
  | `e-code-review` | Review or review/fix loop requests | Structured findings or a clean review result | Route the request there. |
81
- | `source-command-commit` | Commit or push requests | A verified commit or pushed branch | Route the request there. |
82
81
 
83
82
  ## Task seeding
84
83
 
85
- At the start of the work, register every item in
86
- `reference/publication-tasks.md` through `TaskCreate`, `TodoWrite`, or the host
87
- task equivalent when one is available. If no task tool is available, use the
88
- catalog and the running work ledger. Mark each task with `PASS`, `FAIL` plus
89
- file and line evidence, or `N/A` plus a reason for a conditional task.
84
+ When the session exposes a task tool, register the items in
85
+ `reference/publication-tasks.md` as session tasks. Otherwise work through the
86
+ Process steps in order.
90
87
 
91
88
  ## Process
92
89
 
@@ -1,9 +1,7 @@
1
1
  # Pull request publication tasks
2
2
 
3
- Register each line as one session task before starting the process. Complete
4
- each task with `PASS`, `FAIL` plus file and line evidence, or `N/A` plus a
5
- reason when the task is conditional. This file is a task seed catalog, not a
6
- markdown progress board.
3
+ When the session exposes a task tool, register each line as one session task
4
+ before starting the process. This file is a task seed catalog.
7
5
 
8
6
  1. Resolve one repository, action, and selected author. For create, resolve the source branch, base, and head. For other actions, resolve one existing pull request target. Create actions publish drafts.
9
7
  2. Record the title and body file for create or full body rewrite, written by you or drafted by `pstack:poteto-agent` with a PR-writing brief. Mark `N/A` for comment or review bodies that do not rewrite the pull request description.