claude-dev-env 1.68.0 → 1.69.1
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/_shared/CLAUDE.md +13 -0
- package/_shared/pr-loop/CLAUDE.md +24 -0
- package/_shared/pr-loop/scripts/CLAUDE.md +30 -0
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/CLAUDE.md +21 -0
- package/_shared/pr-loop/scripts/tests/CLAUDE.md +32 -0
- package/agents/CLAUDE.md +29 -0
- package/audit-rubrics/CLAUDE.md +41 -0
- package/audit-rubrics/category_rubrics/CLAUDE.md +36 -0
- package/audit-rubrics/prompts/CLAUDE.md +36 -0
- package/bin/CLAUDE.md +28 -0
- package/commands/CLAUDE.md +25 -0
- package/docs/CLAUDE.md +28 -0
- package/docs/references/CLAUDE.md +13 -0
- package/hooks/CLAUDE.md +31 -0
- package/hooks/advisory/CLAUDE.md +16 -0
- package/hooks/blocking/CLAUDE.md +107 -0
- package/hooks/blocking/code_rules_constants_config.py +7 -4
- package/hooks/blocking/code_rules_dead_config_field.py +284 -50
- package/hooks/blocking/code_rules_docstrings.py +97 -0
- package/hooks/blocking/code_rules_enforcer.py +4 -0
- package/hooks/blocking/config/CLAUDE.md +22 -0
- package/hooks/blocking/test_code_rules_enforcer_class_docstring_methods.py +262 -0
- package/hooks/blocking/test_code_rules_enforcer_dead_config_field.py +336 -3
- package/hooks/blocking/test_code_rules_enforcer_dead_module_constant.py +36 -0
- package/hooks/blocking/test_code_rules_enforcer_file_global_constants.py +9 -0
- package/hooks/diagnostic/CLAUDE.md +43 -0
- package/hooks/diagnostic/migrations/CLAUDE.md +16 -0
- package/hooks/diagnostic/queries/CLAUDE.md +19 -0
- package/hooks/git-hooks/CLAUDE.md +28 -0
- package/hooks/git-hooks/git_hooks_constants/CLAUDE.md +21 -0
- package/hooks/hooks_constants/CLAUDE.md +60 -0
- package/hooks/hooks_constants/blocking_check_limits.py +2 -0
- package/hooks/lifecycle/CLAUDE.md +18 -0
- package/hooks/observability/CLAUDE.md +16 -0
- package/hooks/session/CLAUDE.md +21 -0
- package/hooks/validation/CLAUDE.md +19 -0
- package/hooks/validators/CLAUDE.md +49 -0
- package/hooks/workflow/CLAUDE.md +22 -0
- package/package.json +1 -1
- package/rules/CLAUDE.md +46 -0
- package/rules/docstring-prose-matches-implementation.md +1 -1
- package/scripts/CLAUDE.md +34 -0
- package/scripts/dev_env_scripts_constants/CLAUDE.md +14 -0
- package/scripts/sync_to_cursor/CLAUDE.md +23 -0
- package/scripts/tests/CLAUDE.md +18 -0
- package/skills/CLAUDE.md +66 -0
- package/skills/_shared/CLAUDE.md +11 -0
- package/skills/_shared/pr-loop/CLAUDE.md +27 -0
- package/skills/_shared/pr-loop/prompts/CLAUDE.md +9 -0
- package/skills/_shared/pr-loop/scripts/CLAUDE.md +23 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +19 -0
- package/skills/anthropic-plan/CLAUDE.md +34 -0
- package/skills/anthropic-plan/SKILL.md +1 -1
- package/skills/anthropic-plan/scripts/CLAUDE.md +11 -0
- package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +16 -0
- package/skills/anthropic-plan/templates/CLAUDE.md +13 -0
- package/skills/anthropic-plan/workflow/CLAUDE.md +14 -0
- package/skills/auditing-claude-config/CLAUDE.md +20 -0
- package/skills/autoconverge/CLAUDE.md +30 -0
- package/skills/autoconverge/reference/CLAUDE.md +12 -0
- package/skills/autoconverge/workflow/CLAUDE.md +23 -0
- package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +16 -0
- package/skills/bdd-protocol/CLAUDE.md +26 -0
- package/skills/bdd-protocol/references/CLAUDE.md +10 -0
- package/skills/bg-agent/CLAUDE.md +17 -0
- package/skills/bugteam/CLAUDE.md +30 -0
- package/skills/bugteam/reference/CLAUDE.md +22 -0
- package/skills/bugteam/reference/obstacles/CLAUDE.md +24 -0
- package/skills/bugteam/scripts/CLAUDE.md +36 -0
- package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +20 -0
- package/skills/caveman/CLAUDE.md +15 -0
- package/skills/code/CLAUDE.md +17 -0
- package/skills/copilot-review/CLAUDE.md +17 -0
- package/skills/deep-research/CLAUDE.md +17 -0
- package/skills/doc-gist/CLAUDE.md +25 -0
- package/skills/doc-gist/references/CLAUDE.md +9 -0
- package/skills/doc-gist/references/examples/CLAUDE.md +25 -0
- package/skills/doc-gist/scripts/CLAUDE.md +27 -0
- package/skills/doc-gist/scripts/doc_gist_scripts_constants/CLAUDE.md +10 -0
- package/skills/everything-search/CLAUDE.md +17 -0
- package/skills/findbugs/CLAUDE.md +20 -0
- package/skills/fixbugs/CLAUDE.md +19 -0
- package/skills/fresh-branch/CLAUDE.md +15 -0
- package/skills/gh-paginate/CLAUDE.md +18 -0
- package/skills/gotcha/CLAUDE.md +33 -0
- package/skills/implement/CLAUDE.md +27 -0
- package/skills/implement/scripts/CLAUDE.md +22 -0
- package/skills/implement/scripts/implement_scripts_constants/CLAUDE.md +22 -0
- package/skills/logifix/CLAUDE.md +36 -0
- package/skills/logifix/scripts/CLAUDE.md +16 -0
- package/skills/monitor-open-prs/CLAUDE.md +34 -0
- package/skills/monitor-open-prs/scripts/CLAUDE.md +17 -0
- package/skills/pr-consistency-audit/CLAUDE.md +34 -0
- package/skills/pr-consistency-audit/reference/CLAUDE.md +16 -0
- package/skills/pr-converge/CLAUDE.md +29 -0
- package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +26 -0
- package/skills/pr-converge/reference/CLAUDE.md +27 -0
- package/skills/pr-converge/reference/obstacles/CLAUDE.md +23 -0
- package/skills/pr-converge/scripts/CLAUDE.md +36 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +17 -0
- package/skills/pr-converge/workflows/CLAUDE.md +16 -0
- package/skills/pr-review-responder/CLAUDE.md +35 -0
- package/skills/pre-compact/CLAUDE.md +24 -0
- package/skills/qbug/CLAUDE.md +40 -0
- package/skills/rebase/CLAUDE.md +32 -0
- package/skills/recall/CLAUDE.md +30 -0
- package/skills/refine/CLAUDE.md +44 -0
- package/skills/refine/templates/CLAUDE.md +17 -0
- package/skills/remember/CLAUDE.md +31 -0
- package/skills/research-mode/CLAUDE.md +35 -0
- package/skills/session-log/CLAUDE.md +31 -0
- package/skills/session-tidy/CLAUDE.md +36 -0
- package/skills/skill-builder/CLAUDE.md +45 -0
- package/skills/skill-builder/references/CLAUDE.md +19 -0
- package/skills/skill-builder/templates/CLAUDE.md +14 -0
- package/skills/skill-builder/workflows/CLAUDE.md +17 -0
- package/skills/structure-prompt/CLAUDE.md +42 -0
- package/skills/structure-prompt/reference/CLAUDE.md +28 -0
- package/skills/task-build/CLAUDE.md +28 -0
- package/skills/update/CLAUDE.md +38 -0
- package/skills/verified-build/CLAUDE.md +33 -0
- package/system-prompts/CLAUDE.md +17 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# doc-gist/references/examples
|
|
2
|
+
|
|
3
|
+
HTML artifact gallery for the `doc-gist` skill. Has 21 self-contained `.html` files that cover distinct artifact shapes the skill can produce.
|
|
4
|
+
|
|
5
|
+
Files `01`–`20` are Thariq Shihipar's html-effectiveness prototypes (used with permission). File `21-decision-signoff.html` is an original addition in the same style.
|
|
6
|
+
|
|
7
|
+
## Use
|
|
8
|
+
|
|
9
|
+
Study the matching file when designing a fresh artifact for a request. Crib palette, typography, spatial layout, and component patterns — then adapt to the specific request. The gallery teaches what shapes work; each new artifact is its own design.
|
|
10
|
+
|
|
11
|
+
See `SKILL.md` for the full gallery-to-artifact-type mapping table (PR writeup, code review, implementation plan, slide deck, etc.).
|
|
12
|
+
|
|
13
|
+
## Files (sample)
|
|
14
|
+
|
|
15
|
+
| File | Shape |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `01-exploration-code-approaches.html` | Side-by-side approach exploration |
|
|
18
|
+
| `03-code-review-pr.html` | Annotated diff / code review |
|
|
19
|
+
| `09-slide-deck.html` | Keyboard-navigable slide deck |
|
|
20
|
+
| `12-incident-report.html` | Incident timeline / post-mortem |
|
|
21
|
+
| `16-implementation-plan.html` | Implementation plan with timeline and risks |
|
|
22
|
+
| `17-pr-writeup.html` | PR writeup with file-by-file tour |
|
|
23
|
+
| `21-decision-signoff.html` | Decision / sign-off doc with accept-or-change per call |
|
|
24
|
+
|
|
25
|
+
All 21 files are present; the table above is a representative sample.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# doc-gist/scripts
|
|
2
|
+
|
|
3
|
+
Transport script and supporting constants for the `doc-gist` skill.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `gist_upload.py` | Core transport: reads HTML from a file path or stdin, runs `gh gist create`, prints `Gist:` and `Preview:` URLs to stderr, prints the preview URL to stdout, and opens it in the default browser (unless `--no-open`). |
|
|
10
|
+
| `test_gist_upload.py` | Tests for `gist_upload.py`. |
|
|
11
|
+
|
|
12
|
+
## Subdirectories
|
|
13
|
+
|
|
14
|
+
| Directory | Role |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `doc_gist_scripts_constants/` | Named constants imported by `gist_upload.py` (URL prefixes, default filename, timeout). |
|
|
17
|
+
|
|
18
|
+
## CLI usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
python gist_upload.py --input <path-or-stdin>
|
|
22
|
+
[--filename gist-file.html]
|
|
23
|
+
[--description "short label"]
|
|
24
|
+
[--no-open]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Pass `--input -` to read from stdin. The auto-publish hook calls this script with the written file's path; the skill body documents when to call it manually.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# doc-gist/scripts/doc_gist_scripts_constants
|
|
2
|
+
|
|
3
|
+
Named constants for `gist_upload.py`. Importing from this package keeps all URL templates, default filenames, and timeout values out of the script body.
|
|
4
|
+
|
|
5
|
+
## Modules
|
|
6
|
+
|
|
7
|
+
| File | Constants |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `gist_upload_constants.py` | `GIST_HOST_PREFIX` — base URL for parsing gist output; `PREVIEW_URL_TEMPLATE` — htmlpreview.github.io URL shape; `GIST_DEFAULT_FILENAME` — filename when input is stdin; `MINIMUM_GIST_URL_PARTS` — fewest path segments in a valid gist URL; `UPLOAD_TIMEOUT_SECONDS` — subprocess timeout for `gh gist create`. |
|
|
10
|
+
| `__init__.py` | Empty package marker. |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# everything-search
|
|
2
|
+
|
|
3
|
+
Fast file search on Windows using the Everything (voidtools) `es.exe` command-line tool. Triggered by `find files`, `search for files`, `locate files`, or any request to use Everything.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Searches files by extension, name, date modified, size, or path against Everything's real-time index. Returns results instantly regardless of drive size. The skill covers the correct `es.exe` path, search operator syntax, multi-extension patterns, output options, and the junction/symlink note (Everything indexes real NTFS paths only — not junctions or mapped drives).
|
|
8
|
+
|
|
9
|
+
## Key file
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Command syntax for WSL and Windows paths, all search operators (`ext:`, `dm:`, `size:`, wildcards, OR/AND/NOT), output flags (`-sort`, `-n`, `-size`), worked examples, and a junction/drive-mapping lookup table. |
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use for file-system searches by name, extension, size, or date. For content searches use Grep. If a path is a junction or mapped drive and Everything returns nothing, translate to the real NTFS path or fall back to the Glob tool.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# findbugs
|
|
2
|
+
|
|
3
|
+
Audits the current branch's pull request for bugs by spawning the `code-quality-agent` against the full PR diff in a clean room. Triggered by `/findbugs`, `find bugs in this PR`, `audit the PR`, or `bug audit on the branch`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Read-only. The skill resolves PR scope, writes the diff to a scoped temp file, and spawns two `code-quality-agent` instances (primary sonnet + secondary haiku) with a self-contained, context-free prompt covering all A–P audit categories. After both return it merges findings (de-dup, max-wins severity), posts one audit review to the PR via `post_audit_thread.py` (APPROVE on clean, REQUEST_CHANGES with inline anchored comments on dirty), and reports totals and cleared categories to the user.
|
|
8
|
+
|
|
9
|
+
## Key file
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Five-step process: resolve scope, capture diff to a scoped temp path, spawn agents (clean-room prompt XML), post audit review via `post_audit_thread.py`, surface findings and offer `/fixbugs`. Includes refusals, output format, and the anchored-vs-unanchored finding split. |
|
|
14
|
+
|
|
15
|
+
## Constraints
|
|
16
|
+
|
|
17
|
+
- Never edits files, never commits, never pushes.
|
|
18
|
+
- One audit review per invocation is posted back to the PR — required so the unresolved-thread gate sees the audit pass.
|
|
19
|
+
- Disabled by `CLAUDE_REVIEWS_DISABLED=bugteam` (shared token across the audit-skill family).
|
|
20
|
+
- Always ask before running `/fixbugs`; never auto-spawn the fixer.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# fixbugs
|
|
2
|
+
|
|
3
|
+
Bridges `/findbugs` audit results to `/agent-prompt` for automated fixing. Triggered by `/fixbugs`, `fix all the bugs`, `apply the audit fixes`, or `implement the findbugs results`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
A thin bridge: recover the prior `/findbugs` findings from the current conversation, apply an optional severity filter (`P0`, `P0+P1`, `P1`, or all), re-resolve PR scope, then hand the filtered finding list to `/agent-prompt` as a structured goal string. `/agent-prompt` authors the XML prompt, shows an Outcome preview, asks for confirmation, and spawns a background sonnet `clean-coder` agent to apply all fixes in one commit.
|
|
8
|
+
|
|
9
|
+
This skill never audits, never edits files, and never spawns agents directly. The `/agent-prompt` confirmation gate is always preserved.
|
|
10
|
+
|
|
11
|
+
## Key file
|
|
12
|
+
|
|
13
|
+
| File | Purpose |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `SKILL.md` | Four-step process: recover findings, apply severity filter, re-resolve PR scope, hand off to `/agent-prompt` with a goal string in the exact expected shape. Includes refusal cases (no findings, zero bugs, empty filter, missing `agent-prompt` skill) and the implementer constraints (one commit, no `--force`, no rebase, explicit `git add` by path). |
|
|
16
|
+
|
|
17
|
+
## Invocation order
|
|
18
|
+
|
|
19
|
+
Run `/findbugs` first, then `/fixbugs`. Running `/fixbugs` with no prior `/findbugs` in the session returns `No findings in this session. Run /findbugs first.`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# fresh-branch
|
|
2
|
+
|
|
3
|
+
Creates a new branch from `origin/main` (always fresh-fetched). Triggered by `fresh branch`, `new branch from main`, `/fresh-branch`, or `start fresh`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
A shared primitive used by other skills and directly by the user. Fetches `origin/main`, suggests 2–4 branch names via `AskUserQuestion` when a topic is available (polling recent branch naming patterns from `git branch -r`), then creates and checks out the branch with `git checkout -b <name> origin/main`.
|
|
8
|
+
|
|
9
|
+
Does not push the branch. Does not create a PR. Does not switch an existing branch. Callers that need the new branch name (for example, to open a PR) receive it as a return value.
|
|
10
|
+
|
|
11
|
+
## Key file
|
|
12
|
+
|
|
13
|
+
| File | Purpose |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `SKILL.md` | Four-phase instructions: fetch `origin/main`, pick branch name (suggest or prompt), create branch, report. Includes gotchas discovered during use. |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# gh-paginate skill
|
|
2
|
+
|
|
3
|
+
Provides the safe-pagination rule and patterns for `gh api` calls against paginated GitHub list endpoints (PR reviews, PR comments, issue comments, pulls, issues). The rule prevents two silent-truncation defects: default page truncation and per-page `--jq` evaluation.
|
|
4
|
+
|
|
5
|
+
**Trigger:** Loaded by the `gh-paginate` skill name or when any skill or rule references the pagination rule.
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | The complete rule: affected endpoints, safe `--paginate --slurp \| jq` pattern, single-page bound pattern, single-object pattern, newest-first walk pattern, and enforcement notes |
|
|
12
|
+
|
|
13
|
+
## Conventions
|
|
14
|
+
|
|
15
|
+
- The preferred pattern pipes `--paginate --slurp` to an **external** `jq` invocation so cross-page operations (`sort_by`, `last`, `reverse`) run on the merged array-of-pages. The built-in `--jq` flag is incompatible with `--slurp` and runs per-page, producing wrong cross-page results.
|
|
16
|
+
- Single-object endpoints (e.g., `pulls/<number>`) are not paginated; `--paginate` is unnecessary and `gh --jq` is safe.
|
|
17
|
+
- The single-page bound pattern (`?per_page=100` without `--paginate`) is acceptable only when the list is confirmed to stay under 100 entries.
|
|
18
|
+
- This skill ships as documentation only; enforcement via a future PreToolUse hook is noted in `SKILL.md`.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# gotcha skill
|
|
2
|
+
|
|
3
|
+
Captures an obstacle encountered during a skill run and records it as a gotcha entry in the relevant skill file, then opens a draft PR via the `fresh-branch` skill.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/gotcha`, "add a gotcha", "document this gotcha", "record this obstacle".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full workflow: collect obstacle details, delegate to `bg-agent`, confirm to user |
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Distill the obstacle into: which skill file was affected, what happened, what the user did to resolve it, and what to do differently next time.
|
|
16
|
+
2. Invoke `/bg-agent` with a self-contained prompt that instructs the agent to use `/fresh-branch` (branch name `gotcha/<short-slug>`), append to or create a `## Gotchas` section at the bottom of the skill file, commit, push, and open a draft PR.
|
|
17
|
+
3. Confirm to the user that the recording is running in the background.
|
|
18
|
+
|
|
19
|
+
## Gotcha entry format
|
|
20
|
+
|
|
21
|
+
Each entry is a bullet under `## Gotchas`:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
- **<title>:** <what happens>. <what to do instead>.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Repo routing
|
|
28
|
+
|
|
29
|
+
| Skill location | Target repo |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `packages/claude-dev-env/skills/<name>/` | `jl-cmd/claude-code-config` |
|
|
32
|
+
| `~/.claude/skills/<name>/` | `jl-cmd/claude-code-config` |
|
|
33
|
+
| Project `.claude/skills/<name>/` | That project's repo |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Spec Execution Skill
|
|
2
|
+
|
|
3
|
+
This skill (`implement`) runs a spec end-to-end while maintaining a sidecar `implementation-notes.html` that records design decisions, deviations, tradeoffs, and open questions made during the build.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/implement [path-to-spec]`, "build out this plan and keep notes".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full workflow: resolve spec, run it, write notes via `append_note.py` |
|
|
12
|
+
| `packages/claude-dev-env/skills/implement/scripts/append_note.py` | CLI that creates or appends to `implementation-notes.html` |
|
|
13
|
+
| `packages/claude-dev-env/skills/implement/scripts/implement_scripts_constants/notes_constants.py` | Section slugs → headings and default filename |
|
|
14
|
+
|
|
15
|
+
## Subdirectories
|
|
16
|
+
|
|
17
|
+
| Directory | Role |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `scripts/` | Python CLI and constants for the notes file |
|
|
20
|
+
|
|
21
|
+
## Conventions
|
|
22
|
+
|
|
23
|
+
- The spec is taken from `$ARGUMENTS` (path) or the most recent plan in conversation context. If neither is present, the skill asks via `AskUserQuestion`.
|
|
24
|
+
- Notes are appended as decisions are made — not batched at the end.
|
|
25
|
+
- The `append_note.py` CLI accepts `--section decisions|deviations|tradeoffs|questions`, `--about`, `--note`, and optionally `--file`. When `--file` is omitted, the script writes to `./implementation-notes.html`.
|
|
26
|
+
- `$CLAUDE_SKILL_DIR` is substituted by Claude Code at runtime so the bundled script is found regardless of the current working directory.
|
|
27
|
+
- The notes file structure must not be hand-edited — `append_note.py` locates sections by `<section id="...">` markers and the first `</ul>` after each.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# scripts (spec-build skill)
|
|
2
|
+
|
|
3
|
+
Support scripts for the spec-build (`implement`) skill. These scripts create and append to the `implementation-notes.html` sidecar file the skill maintains during a spec build.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `append_note.py` | CLI that creates `implementation-notes.html` with four sections on first run and appends a `<li>` to a named section on later runs |
|
|
10
|
+
| `test_append_note.py` | Tests for `append_note.py` |
|
|
11
|
+
|
|
12
|
+
## Subdirectories
|
|
13
|
+
|
|
14
|
+
| Directory | Role |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `implement_scripts_constants/` | Section slug → heading map and default filename constant |
|
|
17
|
+
|
|
18
|
+
## Conventions
|
|
19
|
+
|
|
20
|
+
- `append_note.py` imports section metadata from `implement_scripts_constants.notes_constants`.
|
|
21
|
+
- HTML-escaping of `--about` and `--note` is handled by the script; callers pass raw text.
|
|
22
|
+
- The script is invoked as `python "${CLAUDE_SKILL_DIR}/scripts/append_note.py"` from within the skill, where `$CLAUDE_SKILL_DIR` resolves to the installed skill directory at runtime.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# implement_scripts_constants
|
|
2
|
+
|
|
3
|
+
Constants module for the `implement` skill's `append_note.py` script.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `__init__.py` | Package marker |
|
|
10
|
+
| `notes_constants.py` | `HEADING_BY_SLUG` dict (section slugs → display headings) and `DEFAULT_NOTES_FILENAME` |
|
|
11
|
+
|
|
12
|
+
## Exported constants
|
|
13
|
+
|
|
14
|
+
| Constant | Value | Used by |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `HEADING_BY_SLUG` | `{"decisions": "Design decisions", "deviations": "Deviations", "tradeoffs": "Tradeoffs", "questions": "Open questions"}` | `append_note.py` — maps `--section` slug to the `<h2>` heading in the HTML file |
|
|
17
|
+
| `DEFAULT_NOTES_FILENAME` | `"implementation-notes.html"` | `append_note.py` — default output path when `--file` is omitted |
|
|
18
|
+
|
|
19
|
+
## Conventions
|
|
20
|
+
|
|
21
|
+
- This module is imported directly by `append_note.py` in the parent `scripts/` directory.
|
|
22
|
+
- Adding a new section requires a new entry in `HEADING_BY_SLUG` and a matching branch in `append_note.py`.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# logifix skill
|
|
2
|
+
|
|
3
|
+
Restores the Logitech Gaming Software (LCore) tray icon when it disappears on Windows. Runs a PowerShell script that reproduces the verified recovery procedure.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/logifix`, "logitech tray icon missing", "LCore tray gone", "logitech is not loaded".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full procedure description, invocation options, fallback steps |
|
|
12
|
+
| `scripts/logifix.ps1` | PowerShell script that runs the recovery procedure |
|
|
13
|
+
|
|
14
|
+
## Subdirectories
|
|
15
|
+
|
|
16
|
+
| Directory | Role |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `scripts/` | The PowerShell recovery script |
|
|
19
|
+
|
|
20
|
+
## What the script does
|
|
21
|
+
|
|
22
|
+
1. Takes a state snapshot (Explorer instances, Logitech services, LCore process).
|
|
23
|
+
2. Stops LCore in user context.
|
|
24
|
+
3. Runs one elevated UAC step: starts `LogiRegistryService`, stops `explorer.exe`, and lets Windows shell auto-respawn rebuild it (does **not** call `Start-Process explorer` from the elevated block).
|
|
25
|
+
4. Waits for shell auto-respawn (default 5 seconds).
|
|
26
|
+
5. Confirms exactly one Explorer in the user's session.
|
|
27
|
+
6. Runs `LCoreRelaunchAttemptCount` full stop-then-launch cycles of `LCore.exe /minimized` (default 2). Always runs the full count.
|
|
28
|
+
7. Takes a final state snapshot.
|
|
29
|
+
|
|
30
|
+
## Invocation
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
/logifix
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Optional parameters: `-ExplorerAutoRespawnWaitSeconds`, `-LCoreInitializationWaitSeconds`, `-LCoreRelaunchAttemptCount`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# logifix/scripts
|
|
2
|
+
|
|
3
|
+
PowerShell recovery script for the `logifix` skill.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `logifix.ps1` | Restores the LCore tray icon: stops LCore, runs one elevated UAC step (starts `LogiRegistryService`, stops explorer, lets Windows auto-respawn), then re-launches LCore a configurable number of times |
|
|
10
|
+
|
|
11
|
+
## Conventions
|
|
12
|
+
|
|
13
|
+
- The script accepts three optional parameters: `-ExplorerAutoRespawnWaitSeconds` (default 5), `-LCoreInitializationWaitSeconds` (default 5), `-LCoreRelaunchAttemptCount` (default 2).
|
|
14
|
+
- The full relaunch count always runs — an early-exit on a responsive LCore is intentional behavior per the recovery procedure.
|
|
15
|
+
- The elevated block does **not** call `Start-Process explorer`; Windows shell auto-respawn handles that to avoid a duplicate admin-context Explorer.
|
|
16
|
+
- Run directly as: `pwsh -File "$HOME\.claude\skills\logifix\scripts\logifix.ps1"`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# monitor-open-prs skill
|
|
2
|
+
|
|
3
|
+
Discovers every open pull request across the `jl-cmd/*` and `JonEcho/*` owner scopes, dispatches `/bugteam` on each with the `--bugbot-retrigger` flag, and polls for new Cursor bugbot replies after each bugteam run.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/monitor-open-prs`, "sweep the open PRs", "audit the open PR backlog".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full workflow: refusal cases, discovery, dispatch, post-convergence polling, final report |
|
|
12
|
+
| `test_skill_contract.py` | Contract tests for the skill |
|
|
13
|
+
| `packages/claude-dev-env/skills/monitor-open-prs/scripts/discover_open_prs.py` | Shells out to `gh search prs` per owner scope and flattens results to a uniform dict shape |
|
|
14
|
+
| `packages/claude-dev-env/skills/monitor-open-prs/scripts/test_discover_open_prs.py` | Tests for the discovery helper |
|
|
15
|
+
|
|
16
|
+
## Subdirectories
|
|
17
|
+
|
|
18
|
+
| Directory | Role |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `scripts/` | Discovery helper and its tests |
|
|
21
|
+
|
|
22
|
+
## Workflow summary
|
|
23
|
+
|
|
24
|
+
1. Call `discover_open_prs.discover_open_prs(all_owners=["jl-cmd", "JonEcho"])` to get the full open-PR list.
|
|
25
|
+
2. For each PR, invoke `/bugteam --bugbot-retrigger <pr_number>` (omit `--bugbot-retrigger` if `CLAUDE_REVIEWS_DISABLED` has `bugbot`).
|
|
26
|
+
3. After each bugteam run, poll for new bugbot comments on a 60s → 120s → 240s → 480s → 960s backoff. Re-invoke bugteam if new findings appear.
|
|
27
|
+
4. Emit a sweep summary when all PRs exit polling.
|
|
28
|
+
|
|
29
|
+
## Refusals (checked first)
|
|
30
|
+
|
|
31
|
+
- `CLAUDE_REVIEWS_DISABLED` has `bugteam` → stop with a message.
|
|
32
|
+
- GitHub API not accessible → stop.
|
|
33
|
+
- Uncommitted changes in the caller's repo → stop.
|
|
34
|
+
- Required subagent types missing (`code-quality-agent`, `clean-coder`) → stop.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# monitor-open-prs/scripts
|
|
2
|
+
|
|
3
|
+
Discovery helper for the `monitor-open-prs` skill.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `discover_open_prs.py` | Queries `gh search prs` for each owner scope and flattens results to a uniform list of dicts |
|
|
10
|
+
| `test_discover_open_prs.py` | Tests for the discovery helper |
|
|
11
|
+
|
|
12
|
+
## Conventions
|
|
13
|
+
|
|
14
|
+
- `discover_open_prs(all_owners: list[str]) -> list[dict]` is the single entry point. It shells out to `gh search prs --owner <owner> --state open --json number,repository,url,headRefName,baseRefName` once per owner and merges the results.
|
|
15
|
+
- Each returned dict has keys: `number`, `owner`, `repo`, `head_ref`, `base_ref`, `url`.
|
|
16
|
+
- An empty scope or an empty sweep returns an empty list and exits cleanly with no errors.
|
|
17
|
+
- The module is stateless and has no filesystem side effects.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# pr-consistency-audit skill
|
|
2
|
+
|
|
3
|
+
Audits a PR for cross-file inconsistencies: wrong argument names, missing required args, references to files or scripts that do not exist, stale feature remnants, docstring-vs-code mismatches, placeholder text, cross-file contradictions, parameter naming convention violations, and cross-platform bugs.
|
|
4
|
+
|
|
5
|
+
**Trigger:** "audit this PR", "find inconsistencies", "cross-reference docs against scripts", "check for stale references", "PR consistency audit".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full process: build manifest, find canonical sources, run 10 detection rules, produce summary |
|
|
12
|
+
| `reference/detection-rules.md` | All 10 detection rules with procedures |
|
|
13
|
+
| `reference/illustrations.md` | Concrete examples of findings with why-they-matter explanations |
|
|
14
|
+
|
|
15
|
+
## Subdirectories
|
|
16
|
+
|
|
17
|
+
| Directory | Role |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `reference/` | Detection rules and worked illustrations |
|
|
20
|
+
|
|
21
|
+
## Process overview
|
|
22
|
+
|
|
23
|
+
1. **Build manifest** — read every changed file; track argparse args, MCP tool calls, shell commands, file path references, named constants, and docstring claims. Write to a temp JSON file.
|
|
24
|
+
2. **Find canonical sources** — note which files define the ground truth for each concept (schemas, payloads, config files, `.py` sources).
|
|
25
|
+
3. **Run all 10 detection rules** — write each finding at once to a temp CSV with `file_path | line_number | rule_id | severity | what_is_wrong | what_it_should_be | evidence_path | evidence_detail`.
|
|
26
|
+
4. **Produce summary** — print totals by rule and severity; list top findings; cite the CSV and manifest paths.
|
|
27
|
+
|
|
28
|
+
## Severity
|
|
29
|
+
|
|
30
|
+
| Severity | Meaning |
|
|
31
|
+
|---|---|
|
|
32
|
+
| P0 | Runtime failure — the command or tool call will error |
|
|
33
|
+
| P1 | Confusing or wrong — will mislead but not crash |
|
|
34
|
+
| P2 | Cleanup — stale references, docs out of sync |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# pr-consistency-audit/reference
|
|
2
|
+
|
|
3
|
+
Reference material for the `pr-consistency-audit` skill. These files define the detection rules the skill runs and show worked examples of findings.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `detection-rules.md` | All 10 detection rules, each with a procedure for how to run it |
|
|
10
|
+
| `illustrations.md` | Concrete examples of findings with explanations of why each matters |
|
|
11
|
+
|
|
12
|
+
## Conventions
|
|
13
|
+
|
|
14
|
+
- The skill reads `detection-rules.md` during Step 3 (run detection rules). Every rule must run against every file; none are skippable.
|
|
15
|
+
- Rule 1 (canonical-source cross-reference) is the highest-signal rule. The skill runs it first.
|
|
16
|
+
- `illustrations.md` is for reviewers and skill authors, not for the skill's runtime process.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# pr-converge skill
|
|
2
|
+
|
|
3
|
+
Drives a draft PR to convergence by looping Cursor Bugbot, a code-review pass, a second-opinion bug audit (`bugteam`), and Copilot — applying TDD fixes, posting inline replies, and re-triggering reviewers each tick until all reviewers are clean on the same HEAD and the PR is mergeable.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/pr-converge`, "drive PR to convergence", "loop bugbot and bugteam", "babysit bugbot and bugteam", "until both are clean", "converge this PR".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full tick workflow, pre-flight checks, state schema, budget-aware tick boundaries, stop conditions |
|
|
12
|
+
| `pr_converge_skill_constants/constants.py` | Runtime and API constants (bot logins, review states, GH API path templates, regex patterns) |
|
|
13
|
+
|
|
14
|
+
## Subdirectories
|
|
15
|
+
|
|
16
|
+
| Directory | Role |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `pr_converge_skill_constants/` | Importable constants module shared by skill scripts |
|
|
19
|
+
| `reference/` | Per-tick steps, convergence gates, fix protocol, obstacle runbooks, state schema, stop conditions, examples |
|
|
20
|
+
| `scripts/` | Python helpers (bugbot check, convergence check, Copilot review fetcher, fix-reply poster, reflow tool) and their tests |
|
|
21
|
+
| `workflows/` | ScheduleWakeup loop pacing specification |
|
|
22
|
+
|
|
23
|
+
## Conventions
|
|
24
|
+
|
|
25
|
+
- Each invocation runs one tick. The next tick is scheduled via `ScheduleWakeup` unless convergence or a stop condition has been reached.
|
|
26
|
+
- Loop state persists to `$CLAUDE_JOB_DIR/pr-converge-state.json` between ticks.
|
|
27
|
+
- The pre-flight gate requires `EnterWorktree` before any file read or API call, and confirms `ScheduleWakeup` is in the tool list.
|
|
28
|
+
- All findings and PR reports state verified facts only — no hedging language.
|
|
29
|
+
- The GitHub MCP (`pull_request_read`, `pull_request_review_write`) is the primary path for PR inspection; `gh api` is the fallback.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# pr_converge_skill_constants
|
|
2
|
+
|
|
3
|
+
Importable Python constants module for the `pr-converge` skill. Script-specific constants (CLI args, markdown patterns, reflow settings) live in `scripts/pr_converge_scripts_constants/` and import from here.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `__init__.py` | Package marker |
|
|
10
|
+
| `constants.py` | All runtime and API constants: bot logins, review states, GH API path templates, bugbot/bugteam detection patterns, exit codes |
|
|
11
|
+
|
|
12
|
+
## Exported constants (selected)
|
|
13
|
+
|
|
14
|
+
| Constant | Purpose |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `CURSOR_BOT_LOGIN` | Login string for the Cursor bugbot reviewer |
|
|
17
|
+
| `COPILOT_REVIEWER_LOGIN` | Login string for the Copilot reviewer bot |
|
|
18
|
+
| `ALL_COPILOT_CLEAN_REVIEW_STATES` | Tuple of review states that count as clean for Copilot |
|
|
19
|
+
| `BUGBOT_DIRTY_BODY_REGEX` | Regex that matches a bugbot review body reporting findings |
|
|
20
|
+
| `GH_REVIEWS_PATH_TEMPLATE` | `gh api` path template for PR reviews |
|
|
21
|
+
| `GH_INLINE_COMMENTS_PATH_TEMPLATE` | `gh api` path template for PR inline comments |
|
|
22
|
+
|
|
23
|
+
## Conventions
|
|
24
|
+
|
|
25
|
+
- All path templates use `str.format(**kwargs)` with keys `owner`, `repo`, `number`.
|
|
26
|
+
- `packages/claude-dev-env/skills/pr-converge/scripts/pr_converge_scripts_constants/pr_converge_constants.py` re-exports everything here via `from pr_converge_skill_constants.constants import ...` so scripts can import from either location.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# pr-converge/reference
|
|
2
|
+
|
|
3
|
+
Reference documents for the `pr-converge` skill. These files define the per-tick step sequence, convergence gates, fix protocol, stop conditions, state schema, multi-PR orchestration, and examples.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `per-tick.md` | Step-by-step procedure for one tick (resolve HEAD, run BUGBOT, CODE_REVIEW, BUGTEAM, COPILOT_WAIT phases, schedule next wakeup) |
|
|
10
|
+
| `convergence-gates.md` | Six gates that must all pass before the PR is marked ready for review |
|
|
11
|
+
| `fix-protocol.md` | How to apply fixes: TDD first, one commit per fix round, reply to each finding inline |
|
|
12
|
+
| `ground-rules.md` | Non-negotiable constraints for the convergence loop |
|
|
13
|
+
| `stop-conditions.md` | Conditions that end the loop without convergence (cap reached, stuck, user stop) |
|
|
14
|
+
| `state-schema.md` | Fields in `pr-converge-state.json` and their meanings |
|
|
15
|
+
| `multi-pr-orchestration.md` | How to run the loop across multiple PRs in parallel |
|
|
16
|
+
| `examples.md` | Worked examples of tick sequences |
|
|
17
|
+
|
|
18
|
+
## Subdirectories
|
|
19
|
+
|
|
20
|
+
| Directory | Role |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `obstacles/` | Per-obstacle runbooks for known failure modes in the convergence loop |
|
|
23
|
+
|
|
24
|
+
## Conventions
|
|
25
|
+
|
|
26
|
+
- `per-tick.md` is the primary reference loaded during each tick. The pacing workflow lives in `../workflows/schedule-wakeup-loop.md`.
|
|
27
|
+
- Every gate in `convergence-gates.md` must produce evidence before the next gate runs.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# pr-converge/reference/obstacles
|
|
2
|
+
|
|
3
|
+
Per-obstacle runbooks for known failure modes in the `pr-converge` convergence loop. Each file covers one specific obstacle: what causes it, how to detect it, and how to recover.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | Obstacle |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `fix-post-replies.md` | Posting inline review replies fails or posts to the wrong thread |
|
|
10
|
+
| `fix-publish-summary.md` | Publishing the bugteam summary comment fails |
|
|
11
|
+
| `fix-push.md` | `git push` fails during a fix commit |
|
|
12
|
+
| `fix-read-filelines.md` | Reading file line ranges for a fix fails |
|
|
13
|
+
| `fix-reset-state.md` | State JSON becomes corrupt or inconsistent between ticks |
|
|
14
|
+
| `fix-resolve-threads.md` | Resolving inline comment threads via GraphQL fails |
|
|
15
|
+
| `fix-spawn-clean-coder.md` | Spawning the `clean-coder` subagent fails or produces no output |
|
|
16
|
+
| `fix-stage-commit.md` | Staging or committing a fix fails |
|
|
17
|
+
| `fix-trigger-bugbot.md` | Triggering Cursor Bugbot via an issue comment fails |
|
|
18
|
+
| `fix-write-test.md` | Writing a failing test before a fix fails |
|
|
19
|
+
|
|
20
|
+
## Conventions
|
|
21
|
+
|
|
22
|
+
- Each runbook is loaded on demand when the convergence loop hits that specific obstacle.
|
|
23
|
+
- Runbooks do not overlap with `per-tick.md`; they cover edge cases and recovery paths that fall outside the normal tick flow.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# pr-converge/scripts
|
|
2
|
+
|
|
3
|
+
Python helper scripts for the `pr-converge` skill, plus their tests and a PowerShell/AutoHotkey toolset for advancing Cursor agents.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `check_bugbot_ci.py` | Checks bugbot CI check-run status on a given SHA |
|
|
10
|
+
| `check_convergence.py` | Evaluates whether all convergence gates pass on the current HEAD |
|
|
11
|
+
| `check_pending_reviews.py` | Fetches pending review requests and reviewer states |
|
|
12
|
+
| `fetch_copilot_reviews.py` | Fetches Copilot reviewer reviews filtered to the current HEAD |
|
|
13
|
+
| `post_fix_reply.py` | Posts an inline reply to a review comment thread |
|
|
14
|
+
| `reflow_skill_md.py` | Reformats `SKILL.md` to enforce a line width limit |
|
|
15
|
+
| `README.md` | MCP tool reference for PR operations used by the scripts |
|
|
16
|
+
| `test_check_bugbot_ci.py` | Tests for `check_bugbot_ci.py` |
|
|
17
|
+
| `test_check_convergence.py` | Tests for `check_convergence.py` |
|
|
18
|
+
| `test_cursor_agents_continue.py` | Tests for the cursor-agents-continue toolset |
|
|
19
|
+
| `test_reflow_skill_md.py` | Tests for `reflow_skill_md.py` |
|
|
20
|
+
| `caller-window-pid.ps1` | Gets the PID of the calling terminal window |
|
|
21
|
+
| `cursor-agents-continue.ahk` | AutoHotkey script to advance Cursor agent prompts |
|
|
22
|
+
| `cursor-agents-continue.cmd` | CMD wrapper for the AHK script |
|
|
23
|
+
| `cursor-agents-continue-stop-others.ps1` | Stops other Cursor agents before advancing one |
|
|
24
|
+
| `cursor-agents-continue-caller.cmd` | Caller-side CMD wrapper |
|
|
25
|
+
|
|
26
|
+
## Subdirectories
|
|
27
|
+
|
|
28
|
+
| Directory | Role |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `pr_converge_scripts_constants/` | Script-specific constants (re-exports skill constants plus adds reflow/CLI constants) |
|
|
31
|
+
|
|
32
|
+
## Conventions
|
|
33
|
+
|
|
34
|
+
- Scripts import constants from `pr_converge_scripts_constants.pr_converge_constants`, which re-exports everything from `pr_converge_skill_constants.constants`.
|
|
35
|
+
- Run scripts as `python ~/.claude/skills/pr-converge/scripts/<script>.py --owner <O> --repo <R> --pr-number <N>`.
|
|
36
|
+
- The `reflow_skill_md.py` script targets `SKILL.md` in the parent skill directory (resolved via `TARGET_SKILL_PATH` in `pr_converge_scripts_constants/reflow_skill_md_constants.py`).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# pr_converge_scripts_constants
|
|
2
|
+
|
|
3
|
+
Constants module for the `pr-converge` skill's Python scripts. Re-exports all runtime/API constants from the skill-level module and adds script-specific constants for CLI arguments, markdown patterns, and reflow settings.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `__init__.py` | Package marker |
|
|
10
|
+
| `pr_converge_constants.py` | Re-exports all constants from `pr_converge_skill_constants.constants` plus adds script-specific values |
|
|
11
|
+
| `reflow_skill_md_constants.py` | Constants for `reflow_skill_md.py`: line width limit, list item patterns, `TARGET_SKILL_PATH` |
|
|
12
|
+
|
|
13
|
+
## Conventions
|
|
14
|
+
|
|
15
|
+
- `pr_converge_constants.py` uses `from pr_converge_skill_constants.constants import ...` (with `# noqa: F401`) to re-export everything so script files can import from one location.
|
|
16
|
+
- `reflow_skill_md_constants.py` resolves `TARGET_SKILL_PATH` from its own `__file__` path, pointing to `SKILL.md` three directories up.
|
|
17
|
+
- Script-specific regex patterns (ordered list items, bullet list items, unfinished markdown link targets, markdown reference definitions) live in `reflow_skill_md_constants.py`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# pr-converge/workflows
|
|
2
|
+
|
|
3
|
+
Pacing workflow specification for the `pr-converge` loop.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `schedule-wakeup-loop.md` | Specifies `ScheduleWakeup` call parameters, delays, and stop/convergence conditions for each tick |
|
|
10
|
+
|
|
11
|
+
## Conventions
|
|
12
|
+
|
|
13
|
+
- `per-tick.md` (in `../reference/`) references this file for Step 4 (schedule next wakeup). Read it before running Step 4.
|
|
14
|
+
- Default delay: `delaySeconds: 360`. Exception: BUGBOT inline-lag branch uses `delaySeconds: 90`.
|
|
15
|
+
- On convergence or a hard stop condition, omit the `ScheduleWakeup` call entirely.
|
|
16
|
+
- The `reason` field in each `ScheduleWakeup` call names what is being awaited, including the current `phase` and `bugbot_clean_at` SHA when set.
|