code-jig 0.12.0__py3-none-any.whl
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.
- code_jig-0.12.0.dist-info/METADATA +154 -0
- code_jig-0.12.0.dist-info/RECORD +52 -0
- code_jig-0.12.0.dist-info/WHEEL +4 -0
- code_jig-0.12.0.dist-info/entry_points.txt +2 -0
- code_jig-0.12.0.dist-info/licenses/LICENSE +202 -0
- codejig/__init__.py +1 -0
- codejig/__main__.py +106 -0
- codejig/_core/VERSION +2 -0
- codejig/_core/bench/requirements.toml +4 -0
- codejig/_core/core/AGENTS.core.md +9 -0
- codejig/_core/core/agents/explorer.toml +24 -0
- codejig/_core/core/agents/judge.toml +19 -0
- codejig/_core/core/agents/reviewer.toml +10 -0
- codejig/_core/core/tiers.toml +4 -0
- codejig/_core/skills/bug-hunt/SKILL.md +131 -0
- codejig/_core/skills/code-analysis/SKILL.md +72 -0
- codejig/_core/skills/codegen/SKILL.md +46 -0
- codejig/_core/skills/cross-review/SKILL.md +32 -0
- codejig/_core/skills/grilling/SKILL.md +60 -0
- codejig/_core/skills/hld-trace/SKILL.md +69 -0
- codejig/_core/skills/improve/SKILL.md +38 -0
- codejig/_core/skills/redacao/SKILL.md +114 -0
- codejig/_core/skills/redacao/checar.py +75 -0
- codejig/_core/skills/redacao/reference.md +118 -0
- codejig/_core/skills/regression-tests/SKILL.md +53 -0
- codejig/_core/skills/remove-ai-attribution/SKILL.md +33 -0
- codejig/_core/skills/skill-validate/SKILL.md +58 -0
- codejig/_core/skills/web-consensus/SKILL.md +55 -0
- codejig/analyze.py +499 -0
- codejig/atomicwrite.py +49 -0
- codejig/collect.py +311 -0
- codejig/doctor.py +370 -0
- codejig/evidence.py +418 -0
- codejig/feedback.py +165 -0
- codejig/gitgate.py +278 -0
- codejig/hooks.py +64 -0
- codejig/humanize.py +206 -0
- codejig/install.py +381 -0
- codejig/managed.py +64 -0
- codejig/migrate.py +515 -0
- codejig/overlay.py +43 -0
- codejig/paths.py +40 -0
- codejig/probe.py +136 -0
- codejig/review.py +73 -0
- codejig/scrub.py +255 -0
- codejig/skillcheck.py +400 -0
- codejig/skilllint.py +99 -0
- codejig/sources.py +248 -0
- codejig/tiers.py +63 -0
- codejig/tokens.py +118 -0
- codejig/trace.py +137 -0
- codejig/watermark.py +147 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: code-jig
|
|
3
|
+
Version: 0.12.0
|
|
4
|
+
Summary: Personal harness core for Codex and Claude Code
|
|
5
|
+
Project-URL: Source, https://github.com/jeancarlos/code-jig
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
|
|
11
|
+
# code-jig
|
|
12
|
+
|
|
13
|
+
[](https://github.com/jeancarlos/code-jig/actions/workflows/ci.yml)
|
|
14
|
+
[](https://github.com/jeancarlos/code-jig/actions/workflows/security.yml)
|
|
15
|
+
[](https://github.com/jeancarlos/code-jig/actions/workflows/ci.yml)
|
|
16
|
+
[](https://github.com/jeancarlos/code-jig/releases/latest)
|
|
17
|
+
[](LICENSE)
|
|
18
|
+
[](https://scorecard.dev/viewer/?uri=github.com/jeancarlos/code-jig)
|
|
19
|
+

|
|
20
|
+

|
|
21
|
+
-brightgreen)
|
|
22
|
+
|
|
23
|
+
**Make the official Codex CLI cheaper, safer and smarter, by configuration alone.**
|
|
24
|
+
|
|
25
|
+
code-jig is an open-source config pack for [OpenAI Codex](https://github.com/openai/codex). One command turns a stock install into a tuned setup: model tiers, automatic command review, a local token tracker, a set of battle-tested skills and a knowledge base that grows with you. No proxy, no daemon, no fork, no extra binaries. Just Python's standard library and the settings Codex already ships.
|
|
26
|
+
|
|
27
|
+
## Why I built it
|
|
28
|
+
|
|
29
|
+
I use coding agents every day, and I kept running into the same four problems.
|
|
30
|
+
|
|
31
|
+
**1. Tokens disappear and nobody can say where.** Input, not output, is the bill: every request re-sends the whole conversation. I wanted to see exactly where it goes (which sessions, which commands, how much the safety reviews cost) without sending a byte to anyone. So code-jig reads Codex's own session files into a local SQLite database after every turn. Its totals match Codex's own per-thread count and [ccusage](https://github.com/ryoppippi/ccusage) to the token.
|
|
32
|
+
|
|
33
|
+
**2. Safety that asks you a hundred times a day gets switched off.** Codex ships Guardian, a reviewer model that approves or denies commands leaving the sandbox. code-jig turns it on in every tier and lets you *add* local policy on top of the upstream rules instead of replacing them. You stay protected, and you stop clicking "approve".
|
|
34
|
+
|
|
35
|
+
**3. Tips are cheap, measurements are not.** Every choice here was tested on a real bench before it shipped, and some popular ideas did not survive. An output-compression layer I used to swear by turned out to save little; Codex's own `tool_output_token_limit` already covered what mattered, so it went. One Guardian review costs about 7,000 input tokens on the bench, 84% of them cached, so I know what safety costs instead of guessing.
|
|
36
|
+
|
|
37
|
+
**4. A setup should get better with use, and travel.** Lessons learned on a laptop usually die in that laptop's shell history. Here they become rules, Guardian policy, skills or knowledge facts in a small **overlay**, reviewed like code. The shared **core** stays clean and versioned; every machine gets its own overlay; nothing private ever flows back into the core.
|
|
38
|
+
|
|
39
|
+
## What you get
|
|
40
|
+
|
|
41
|
+
- **Tiers**: `default`, `deep`, `bulk`, `review`, each a generated Codex profile with its own model and reasoning effort. Pick the right brain for the job; [daily use](docs/runbooks/daily-use.md#which-model-for-which-job) maps jobs and skills to models for a public and an enterprise catalog.
|
|
42
|
+
- **Cheap subagents**: an `explorer` role on the `bulk` model answers lookups with line ranges instead of file dumps, a `reviewer` role on the `review` model attacks plans and findings, and a `judge` role on the `deep` model decides disputes. Code-writing subagents keep the session's model.
|
|
43
|
+
- **Guardian everywhere**, with your additions layered on the upstream policy.
|
|
44
|
+
- **Token tracker**: `code-jig tokens` shows input, cache hit, Guardian share, escalated commands, the heaviest sessions and per-model usage. All local.
|
|
45
|
+
- **Evidence**: `code-jig evidence` compares commits made in Codex sessions with the same repos' other commits (rework, `analyze` findings) and reports test runs, skill use, Guardian decisions and cost. Local data only.
|
|
46
|
+
- **Cross-family review**: `code-jig cross-review` sends your diff to a model from another family, read-only, before you push.
|
|
47
|
+
- **Sonar-style analysis without a server**: `code-jig analyze` runs the analyzers you already have (lizard, ruff, vulture, mypy, eslint with sonarjs, knip, tsc, dotnet build with SonarAnalyzer and NuGet audit, semgrep, gitleaks, osv-scanner) and groups the findings like Sonar: security, secrets, dependencies, bugs, types, unused code, complexity, duplication.
|
|
48
|
+
- **Requirement tracing**: `code-jig trace` checks which requirement IDs (from Azure DevOps, GitHub issues or a Markdown design) have tests, and which tests cite IDs that no longer exist.
|
|
49
|
+
- **Skills**: `cross-review`, `grilling` (stress-test a decision), `web-consensus` (settle facts against live sources), `improve` (turn a lesson into a durable change), and the deterministic toolbox: `code-analysis`, `regression-tests`, `hld-trace`, `bug-hunt` (property tests, fuzzing, mutation testing), `codegen` (OpenAPI clients, codemods) and `skill-validate`. Plus [superpowers](https://github.com/obra/superpowers) in one command.
|
|
50
|
+
- **Knowledge base**: one fact per file, indexed, pointed at by the generated AGENTS.md.
|
|
51
|
+
- **Sourced research**: `web-consensus` runs researchers, challenger and judge on the model each job needs, and `code-jig check-sources` confirms every quoted sentence is really on the cited page.
|
|
52
|
+
- **No AI attribution, no unreviewed prose**: an opt-in git gate strips AI co-author lines from commit messages, removes invisible characters from staged files, refuses agent-written docs until you commit them yourself, cleans attribution from the commits you are about to push (then asks you to push again), and refuses pushes that fail your test command.
|
|
53
|
+
- **Skills proven on Codex**: `code-jig lint-skill` and the `skill-validate` skill check a skill's text; `code-jig skill-check --review --live` has Codex review it and run its test cases, and CI refuses a skill whose stamp is not current.
|
|
54
|
+
- **Edit feedback**: after every agent write, syntax errors and undefined names in Python, JSON and TOML, and a notice when a test is deleted or skipped, go straight back to the model. Nothing blocks.
|
|
55
|
+
- **Doctor**: checks the binary, the pins, every tier's model against your account's catalog, the subagent roles, managed requirements, the AGENTS.md budget and the size of the skills list sent with every request, and probes each tier for free.
|
|
56
|
+
- **Works on locked-down machines**: native Windows support, no scripts required, respects administrator-managed Codex config and tells you how it differs from what was tested.
|
|
57
|
+
|
|
58
|
+
## Quick start
|
|
59
|
+
|
|
60
|
+
Requires Python 3.11+ and git. Your overlay is a folder or git repository with an `overlay.toml`; see [personalizing](docs/personalizing.md). With no overlay, the installer makes `~/code-jig-overlay` for you.
|
|
61
|
+
|
|
62
|
+
### From a release (no git checkout)
|
|
63
|
+
|
|
64
|
+
<!-- install:start -->
|
|
65
|
+
Latest release: **v0.12.0**. Everything downloads from GitHub. Copy a block as it is; it runs without edits.
|
|
66
|
+
|
|
67
|
+
Linux and macOS:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
curl -fsSL https://github.com/jeancarlos/code-jig/releases/download/v0.12.0/bootstrap.py | python3 -I -
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Windows (PowerShell):
|
|
74
|
+
|
|
75
|
+
```powershell
|
|
76
|
+
irm https://github.com/jeancarlos/code-jig/releases/download/v0.12.0/bootstrap.py -OutFile bootstrap.py
|
|
77
|
+
py -3 -I bootstrap.py
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
To use your own overlay instead of the default `~/code-jig-overlay`, add `--overlay` and its folder or git URL at the end of the `python3`/`py` line, for example `--overlay ~/my-overlay`.
|
|
81
|
+
|
|
82
|
+
A piped script cannot check itself. To read what you run, download only `bootstrap.py`, read it, then run it:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
curl -fsSL -o bootstrap.py https://github.com/jeancarlos/code-jig/releases/download/v0.12.0/bootstrap.py
|
|
86
|
+
python3 -I bootstrap.py
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`bootstrap.py` has no checksum of its own; reading it is the check. The bootstrap downloads the zip itself and checks it against the release's `SHA256SUMS`. That catches a corrupted download, but not a compromised GitHub release. Releases before v0.11.0 have no zip.
|
|
90
|
+
|
|
91
|
+
**No one-liner allowed?** On a machine that blocks the download or PATH edits, download `code-jig.zip`, `SHA256SUMS` and `bootstrap.py` from the [v0.12.0 release page](https://github.com/jeancarlos/code-jig/releases/tag/v0.12.0) into one folder and run `py -3 -I bootstrap.py --zip code-jig.zip` there (`python3 -I` on Linux and macOS). The launcher does not need to be on PATH: the generated `AGENTS.md` tells agents its full path.
|
|
92
|
+
<!-- install:end -->
|
|
93
|
+
|
|
94
|
+
The bootstrap unpacks the release into `~/.local/share/code-jig/vX.Y.Z/` (`%LOCALAPPDATA%\code-jig\vX.Y.Z\` on Windows), runs `install`, writes `code-jig` and `cjig` launchers in `~/.local/bin` and runs `doctor`. The overlay's `core_version` picks the release. To change it, edit `core_version` and run the bootstrap again; see [upgrade and rollback](docs/runbooks/upgrade-and-rollback.md).
|
|
95
|
+
|
|
96
|
+
### From a checkout (to change the core)
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
git clone https://github.com/jeancarlos/code-jig
|
|
100
|
+
cp -r code-jig/overlay-examples/personal ~/code-jig-overlay # your overlay
|
|
101
|
+
export CODE_JIG_OVERLAY=~/code-jig-overlay
|
|
102
|
+
cd code-jig
|
|
103
|
+
./install.sh # Windows: py -3 -m codejig install
|
|
104
|
+
PYTHONPATH=. python3 -m codejig doctor
|
|
105
|
+
codex --profile default
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Edit `~/code-jig-overlay/profiles.toml` to pick your models; `doctor` lists the ones your account can use.
|
|
109
|
+
|
|
110
|
+
### What the install counts
|
|
111
|
+
|
|
112
|
+
The tool sends nothing. The download site counts requests for `bootstrap.py` and for release zips, and stores the event, the version, the client type (curl, PowerShell, Python or other) and the country. It does not store your IP address, your user-agent string or any install ID. The counts are request counts, not installs. See [ADR 0027](docs/adr/0027-install-from-a-release-url.md).
|
|
113
|
+
|
|
114
|
+
**Prefer pipx?** `pipx install code-jig` installs the same release files as a wheel from PyPI, published from CI with Trusted Publishing and a PyPI attestation. Pick the overlay with `--overlay` and run `code-jig install` and `code-jig doctor`; `core_version` must match the installed version, and `pipx install code-jig==X.Y.Z` pins it. The first PyPI release is v0.12.0.
|
|
115
|
+
|
|
116
|
+
## Documentation
|
|
117
|
+
|
|
118
|
+
| Read | When |
|
|
119
|
+
|---|---|
|
|
120
|
+
| [Daily use](docs/runbooks/daily-use.md) | Tiers, skills, reviews, the repo's own AGENTS.md |
|
|
121
|
+
| [Doctor](docs/runbooks/doctor.md) | What every check means and how to fix it |
|
|
122
|
+
| [Tokens](docs/runbooks/tokens.md) | Reading the usage report |
|
|
123
|
+
| [Evidence](docs/runbooks/evidence.md) | Whether code-jig pays off: rework, tests, skills, cost |
|
|
124
|
+
| [Code quality](docs/runbooks/code-quality.md) | `analyze`, `trace`, the toolbox skills, installing the tools |
|
|
125
|
+
| [Managed machines](docs/runbooks/managed-machine.md) | Installing where someone else administers the machine |
|
|
126
|
+
| [Network and certificates](docs/runbooks/network-and-certificates.md) | TLS-inspecting networks, git and CLI tools in the sandbox |
|
|
127
|
+
| [Circuit breaker](docs/runbooks/circuit-breaker.md) | When Guardian stops a turn |
|
|
128
|
+
| [Commit attribution](docs/runbooks/commit-attribution.md) | Codex's co-author trailer and how to turn it off |
|
|
129
|
+
| [Watermarks, humanizing and edit feedback](docs/runbooks/watermark-and-humanize.md) | What the write hook strips from agent output, what it reports back to the model, and how to run or disable it |
|
|
130
|
+
| [Upgrade and rollback](docs/runbooks/upgrade-and-rollback.md) | Updates, rollbacks, uninstalling |
|
|
131
|
+
| [Personalizing](docs/personalizing.md) | Overlay slots, pinning, the clean-room rule |
|
|
132
|
+
| [Decisions](docs/adr/) | Why each design choice was made, and what was rejected |
|
|
133
|
+
| [Contributing](CONTRIBUTING.md) | Code rules and tests |
|
|
134
|
+
| [Editing the deck](docs/deck/README.md) | The presentation and its data files |
|
|
135
|
+
|
|
136
|
+
## Principles
|
|
137
|
+
|
|
138
|
+
- **Configuration, not interception.** code-jig writes files Codex reads. It never sits between you and the model.
|
|
139
|
+
- **Measure, then decide.** Bench data in the repo, never guesses.
|
|
140
|
+
- **Additive safety.** Local policy extends upstream policy; it never replaces it.
|
|
141
|
+
- **Clean-room overlays.** Private context stays in private overlays. The core carries only what anyone could use.
|
|
142
|
+
|
|
143
|
+
## Verify a release
|
|
144
|
+
|
|
145
|
+
Every release asset has a Sigstore bundle (`<asset>.sigstore.json`), a SLSA build provenance file (`code-jig.intoto.jsonl`) and an SPDX SBOM (`code-jig.spdx.json`). Verify with:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
gh attestation verify code-jig.zip --repo jeancarlos/code-jig
|
|
149
|
+
cosign verify-blob code-jig.zip --bundle code-jig.zip.sigstore.json --certificate-identity-regexp '^https://github.com/jeancarlos/code-jig/' --certificate-oidc-issuer https://token.actions.githubusercontent.com
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
Apache-2.0.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
codejig/__init__.py,sha256=oFXJ29j3C1ptyR4srl_tl-0-F7jzcbzJxfN7qHOHwv0,19
|
|
2
|
+
codejig/__main__.py,sha256=9uMApG4EwjhSPByD35-l1PnTpHcqGydtTjXap8t_4uw,3895
|
|
3
|
+
codejig/analyze.py,sha256=tcCsPI48tpd6QGbAjSVDuybwxVSdyolj3yDKULc11po,22361
|
|
4
|
+
codejig/atomicwrite.py,sha256=ZYbujtL-Z-GDEmHdigtbglFmpOnrrCl06ftqDVE4zfs,1792
|
|
5
|
+
codejig/collect.py,sha256=TjwTeNRklihGK9reFyFwmkIr44t3BbLS_w21xLSPMnw,12870
|
|
6
|
+
codejig/doctor.py,sha256=McJp0dRuOKswbvfuAURVJO0WACdszTPBONeoIMO9fLg,15626
|
|
7
|
+
codejig/evidence.py,sha256=h919W8OQz3tWtjt84KmNJWeI5c0UmDF03yptaWTRA_w,17082
|
|
8
|
+
codejig/feedback.py,sha256=8ioe5xRyI5PF0nB2EY3cQbP4o-0xGUi0CYaQzODrOgI,5980
|
|
9
|
+
codejig/gitgate.py,sha256=dbRf5oPhecU3sjaQR7EFdc68C2gdoVKYh7jhBkJMQmM,11460
|
|
10
|
+
codejig/hooks.py,sha256=bF6SvwKJorX4uzZz8JLhSkm8Hj08YhTyN5A-IazlDHA,2422
|
|
11
|
+
codejig/humanize.py,sha256=_qa29ilrucGECb7c8leCZUjBqkdE98SMWrP0DX3BQys,6472
|
|
12
|
+
codejig/install.py,sha256=5fg8vmNLr77uYljioIRVM4FFy61KHfpFDa9mgvaU_BE,16124
|
|
13
|
+
codejig/managed.py,sha256=JMK5GzQER8hSdbBj_Ml3NaKGkN_PI5u5ytU-OtJy4Kg,3006
|
|
14
|
+
codejig/migrate.py,sha256=shuk4Cm27TPiR2zDavwLoF_8l7CDDqwMTyyCLG1LyFQ,19430
|
|
15
|
+
codejig/overlay.py,sha256=jYR_AgErdFLO1-L_mzk4g-i0_SflSAp1xyTcCDY0ltA,1655
|
|
16
|
+
codejig/paths.py,sha256=jBkb-VDsoXmppdiYsf8n5bobi9gDLNihC6OZUCBM7aE,1270
|
|
17
|
+
codejig/probe.py,sha256=0oBBOa90iU6poFz6q3c2QFYIdYY3jlVoGGTuU8MNBKs,6020
|
|
18
|
+
codejig/review.py,sha256=-CjXPhYJcnUUDL9kuw5KOlE6_qf2HJH9cJWKIBYsLl8,3323
|
|
19
|
+
codejig/scrub.py,sha256=Lg2DLrmCIqlY3ErOe1y70p7gKSfpw8t-wVPSRfw0npo,10619
|
|
20
|
+
codejig/skillcheck.py,sha256=k08ZSEFhMhs4m-VmRd3YI3iyn0YbgztxKhIfIfRGbNY,19222
|
|
21
|
+
codejig/skilllint.py,sha256=tUFNGlTdtSiySOiDlnLgqFpD8jH5OpvbJG3iWPRi16E,4257
|
|
22
|
+
codejig/sources.py,sha256=Eh3bIXUxHfjYVn19NBDVgj__W3VzpvYFeOSI-9opSko,8576
|
|
23
|
+
codejig/tiers.py,sha256=2hE9_aG9hxx3uyPc56HnroV96H7AkhksNQ2LVX8rPBY,2162
|
|
24
|
+
codejig/tokens.py,sha256=6WBrDG7nBwh9QGqcI92FtmUsoX_4wtj2fwrkYR6eCmI,5313
|
|
25
|
+
codejig/trace.py,sha256=ijw2bxjpFRVocc0XGrkUiWd4KGcj7YK2Ztugf3ihAVQ,4879
|
|
26
|
+
codejig/watermark.py,sha256=Qbe2QXPvmMsfxzPvRvf0CKh43LXU5mbL8W-OoWArurE,5020
|
|
27
|
+
codejig/_core/VERSION,sha256=t7HtzNCbro8KktA0YpR4NFTGF-OFvEMjHz6O7GUDZM8,73
|
|
28
|
+
codejig/_core/bench/requirements.toml,sha256=7OqsLeLDvcvI9Lk3q2e06iW4M7GhREiSoXEdJ_LP8T0,203
|
|
29
|
+
codejig/_core/core/AGENTS.core.md,sha256=OjenxuZiO0e6L_3y91cMxFJrgkFBJ_2D7b1WDuP7WKQ,1510
|
|
30
|
+
codejig/_core/core/tiers.toml,sha256=Pr2qyqI_5sOnpxvaJOjkVQJJR8XHxZkUqEKHo4qbbXE,62
|
|
31
|
+
codejig/_core/core/agents/explorer.toml,sha256=AFVWPqy9fstEvdxYQ2qfZySut5l-Ffn19j7mniBetPg,1439
|
|
32
|
+
codejig/_core/core/agents/judge.toml,sha256=RDFd4KgIh0XGWDDcFFXD6PoSJ_T6-5qYrMgGRRff6dY,1051
|
|
33
|
+
codejig/_core/core/agents/reviewer.toml,sha256=caolxqS4cuCT7oVqNMCcwoor7qz1x1qvGXehiSe5-ew,728
|
|
34
|
+
codejig/_core/skills/bug-hunt/SKILL.md,sha256=M3DfVUn8PBv21g0T1DRC4lFze2TKWS-Ut-Ur_GjSFEU,10470
|
|
35
|
+
codejig/_core/skills/code-analysis/SKILL.md,sha256=VUTuNkAFXimmAfHyX8nqE5TS6QVy7AU7DhhLpJ7mX2k,5972
|
|
36
|
+
codejig/_core/skills/codegen/SKILL.md,sha256=chXoMeY5lGPPoW5qZ0_F37mh3XHJOJmCDukjOPLHZVQ,2789
|
|
37
|
+
codejig/_core/skills/cross-review/SKILL.md,sha256=N20NaHzIGLxORc16YthdkedlcFilFDu5sPI1eENbP1g,1678
|
|
38
|
+
codejig/_core/skills/grilling/SKILL.md,sha256=1ck-o6nM8eU2SkVwLNTX9wXtA3Pr1qbB2eW0pLJ2YQM,3220
|
|
39
|
+
codejig/_core/skills/hld-trace/SKILL.md,sha256=VCgrmblWlPM-2wHL1CoCRo_CREFAFl4j043Yg-yrdag,4847
|
|
40
|
+
codejig/_core/skills/improve/SKILL.md,sha256=_gTcDsyHt3RwFF0W9q3q5JSLHg8EQNdGPy6uiniFKRU,2346
|
|
41
|
+
codejig/_core/skills/redacao/SKILL.md,sha256=B1UZLJ7CE5-jDmfR53rQxQzdptG9SqWrSiBdswBE-rg,9776
|
|
42
|
+
codejig/_core/skills/redacao/checar.py,sha256=8ysAFXU1bLbI9iUyWFuflM7JeblfhAv4f4gwwtpngEE,2966
|
|
43
|
+
codejig/_core/skills/redacao/reference.md,sha256=2kLfx4XH6YmRdXU07DKOA5P8GbmMBDv5l-JVwmcUk44,9775
|
|
44
|
+
codejig/_core/skills/regression-tests/SKILL.md,sha256=SQFEbVwWprf2tmOJjYtF2wuzvUmBuKrbmjuHkIH1My8,2720
|
|
45
|
+
codejig/_core/skills/remove-ai-attribution/SKILL.md,sha256=zlxhS6H30SGj6W4GzPso7MV1u_9UHvUyLs2Ldb18H9o,2981
|
|
46
|
+
codejig/_core/skills/skill-validate/SKILL.md,sha256=0573vaSlkVqNbpINWo9OQuo_qbsvF77I7xw3I0HCVjc,3853
|
|
47
|
+
codejig/_core/skills/web-consensus/SKILL.md,sha256=kgWcHEx53tRGLe7Ezmsmzmg_MWkF_3d0jnQPGwial-4,6351
|
|
48
|
+
code_jig-0.12.0.dist-info/METADATA,sha256=OSc-R_DuXmyo88_-9YaeHuTimdsa8sltv2ZVMhaxSek,13314
|
|
49
|
+
code_jig-0.12.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
50
|
+
code_jig-0.12.0.dist-info/entry_points.txt,sha256=hcZkHUw2L_IOmVHY822XmHfG0sFWE4iYvo02LSHevMA,51
|
|
51
|
+
code_jig-0.12.0.dist-info/licenses/LICENSE,sha256=Ln2GpwCk-iWdsvheE5ZizciKqkCp6y_rl-4XvsAv5YY,11341
|
|
52
|
+
code_jig-0.12.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 Jean Souza
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
|
202
|
+
|
codejig/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "0.12.0"
|
codejig/__main__.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import importlib
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
9
|
+
p = argparse.ArgumentParser(prog="code-jig")
|
|
10
|
+
p.add_argument("--overlay")
|
|
11
|
+
p.add_argument("--codex-home")
|
|
12
|
+
sub = p.add_subparsers(dest="cmd", required=True)
|
|
13
|
+
sub.add_parser("install")
|
|
14
|
+
d = sub.add_parser("doctor")
|
|
15
|
+
d.add_argument("--codex-bin")
|
|
16
|
+
d.add_argument("--check-binary", action="store_true")
|
|
17
|
+
d.add_argument("--live", action="store_true")
|
|
18
|
+
c = sub.add_parser("collect")
|
|
19
|
+
c.add_argument("--rescan", action="store_true")
|
|
20
|
+
h = sub.add_parser("hooks")
|
|
21
|
+
h.add_argument("--hook-type", choices=["claude-code", "codex"], required=True)
|
|
22
|
+
h.add_argument("path", nargs="*")
|
|
23
|
+
hu = sub.add_parser("humanize")
|
|
24
|
+
hu.add_argument("path", nargs="*")
|
|
25
|
+
hu.add_argument("--check", action="store_true", help="dry-run: report changes without writing")
|
|
26
|
+
t = sub.add_parser("tokens")
|
|
27
|
+
t.add_argument("--days", type=int, default=7)
|
|
28
|
+
t.add_argument("--cache-floor", type=float, default=97.5)
|
|
29
|
+
t.add_argument("--top", type=int, default=10)
|
|
30
|
+
r = sub.add_parser("cross-review")
|
|
31
|
+
r.add_argument("--base")
|
|
32
|
+
r.add_argument("--profile", default="review")
|
|
33
|
+
r.add_argument("--codex-bin")
|
|
34
|
+
r.add_argument("files", nargs="*")
|
|
35
|
+
a = sub.add_parser("analyze")
|
|
36
|
+
a.add_argument("path", nargs="?", default=".")
|
|
37
|
+
a.add_argument("--base")
|
|
38
|
+
a.add_argument("--top", type=int, default=10)
|
|
39
|
+
a.add_argument("--json", action="store_true")
|
|
40
|
+
a.add_argument("--timeout", type=int, default=600)
|
|
41
|
+
tr = sub.add_parser("trace")
|
|
42
|
+
tr.add_argument("ids")
|
|
43
|
+
tr.add_argument("--path", default=".")
|
|
44
|
+
tr.add_argument("--pattern", default="REQ-{id}")
|
|
45
|
+
tr.add_argument("--json", action="store_true")
|
|
46
|
+
ev = sub.add_parser("evidence")
|
|
47
|
+
ev.add_argument("--days", type=int, default=90)
|
|
48
|
+
ev.add_argument("--repo")
|
|
49
|
+
ev.add_argument("--analyze", type=int, default=0)
|
|
50
|
+
ev.add_argument("--timeout", type=int, default=600)
|
|
51
|
+
ev.add_argument("--json", action="store_true")
|
|
52
|
+
ls = sub.add_parser("lint-skill")
|
|
53
|
+
ls.add_argument("path", nargs="*")
|
|
54
|
+
sc = sub.add_parser("scrub")
|
|
55
|
+
sc.add_argument("path", nargs="?", default=".")
|
|
56
|
+
sc.add_argument("--author", action="append", default=[])
|
|
57
|
+
sc.add_argument("--dry-run", action="store_true")
|
|
58
|
+
gh = sub.add_parser("git-hook")
|
|
59
|
+
gh.add_argument("name")
|
|
60
|
+
gh.add_argument("rest", nargs="*")
|
|
61
|
+
gh.add_argument("--prose", action="store_true")
|
|
62
|
+
gh.add_argument("--cleanup", action="store_true")
|
|
63
|
+
sk = sub.add_parser("skill-check")
|
|
64
|
+
sk.add_argument("skills", nargs="+")
|
|
65
|
+
sk.add_argument("--review", action="store_true")
|
|
66
|
+
sk.add_argument("--live", action="store_true")
|
|
67
|
+
sk.add_argument("--profile", default="default")
|
|
68
|
+
sk.add_argument("--codex-bin")
|
|
69
|
+
sk.add_argument("--trust-evals", action="store_true")
|
|
70
|
+
cs = sub.add_parser("check-sources")
|
|
71
|
+
cs.add_argument("files", nargs="+")
|
|
72
|
+
mg = sub.add_parser("migrate")
|
|
73
|
+
mg.add_argument("--dry-run", action="store_true")
|
|
74
|
+
mg.add_argument("repos", nargs="*")
|
|
75
|
+
return p
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
COMMAND_MODULES = {
|
|
79
|
+
"install": "install",
|
|
80
|
+
"collect": "collect",
|
|
81
|
+
"tokens": "tokens",
|
|
82
|
+
"cross-review": "review",
|
|
83
|
+
"analyze": "analyze",
|
|
84
|
+
"trace": "trace",
|
|
85
|
+
"evidence": "evidence",
|
|
86
|
+
"hooks": "hooks",
|
|
87
|
+
"humanize": "humanize",
|
|
88
|
+
"lint-skill": "skilllint",
|
|
89
|
+
"scrub": "scrub",
|
|
90
|
+
"git-hook": "gitgate",
|
|
91
|
+
"skill-check": "skillcheck",
|
|
92
|
+
"check-sources": "sources",
|
|
93
|
+
"migrate": "migrate",
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def main(argv: list[str] | None = None) -> int:
|
|
98
|
+
if sys.version_info < (3, 11):
|
|
99
|
+
print("code-jig: Python 3.11 or newer is required", file=sys.stderr)
|
|
100
|
+
return 2
|
|
101
|
+
args = build_parser().parse_args(argv)
|
|
102
|
+
return importlib.import_module(f"codejig.{COMMAND_MODULES.get(args.cmd, 'doctor')}").cli(args)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
if __name__ == "__main__":
|
|
106
|
+
sys.exit(main())
|
codejig/_core/VERSION
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# code-jig core rules
|
|
2
|
+
|
|
3
|
+
- One thread per task. When the topic changes, finish and start a new thread instead of continuing.
|
|
4
|
+
- Deterministic first. Before reasoning about anything countable or checkable, run the `code-jig` command or script that answers it.
|
|
5
|
+
- No polling loops. Do not chain `sleep`/`wait` calls when one blocking command or a single check gives the answer.
|
|
6
|
+
- Minimal code. Reuse what exists, prefer the standard library, delete before adding, no speculative abstractions.
|
|
7
|
+
- Root cause over symptom. Fix the shared function, not each caller.
|
|
8
|
+
- No AI attribution. Never write `Co-authored-by` or `Generated with` lines for an AI, `AI-assisted` notes or robot emoji in commits, pull requests, comments or files. If one already reached history, use the `remove-ai-attribution` skill.
|
|
9
|
+
- Subagent check. Before each `spawn_agent`, decide whether the job needs one and which `agent_type` fits. Skip it for one grep, one file read or a few commands: do those yourself. `explorer` (bulk tier) for lookups, `worker` for one bounded change with a clear file scope, checked before the next, `reviewer` (review tier) to attack a plan, diff or claim before acting on it, `judge` (deep tier) to decide between gathered conflicting claims, `default` for any other self-contained task. Keep architecture, subtle multi-file logic, security and root-cause debugging in the main thread, and say so when they need the deep tier. At most three in parallel unless asked. Name the agent you picked and why in one line.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name = "explorer"
|
|
2
|
+
description = """
|
|
3
|
+
Use `explorer` for lookups: where something is defined or used, what a file, doc or command output says, what a web source says.
|
|
4
|
+
It runs on the bulk tier, a fast and cheap model, and returns paths with line ranges instead of file contents.
|
|
5
|
+
- Give it a self-contained question with the paths or names it needs, and do not fork your history into it (`fork_turns`): a forked explorer re-reads the whole conversation.
|
|
6
|
+
- Spawn several in parallel for independent questions, and keep working while they run.
|
|
7
|
+
- Trust their answers unless a fact is load-bearing; then read the lines they cite yourself.
|
|
8
|
+
- It costs a full request of its own; for one grep or one file read, run it yourself.
|
|
9
|
+
- Never use it to write or change code."""
|
|
10
|
+
developer_instructions = """
|
|
11
|
+
You are an explorer. Answer the one question you were given, and only that question.
|
|
12
|
+
- Read files, search, and run commands that change nothing. Use web search only for facts outside the repository.
|
|
13
|
+
- Never edit files, install anything, or run commands that change state.
|
|
14
|
+
- Answer with what you found: `path:start-end` line ranges with a one-line fact each, and for web facts the URL with a short exact quote.
|
|
15
|
+
- Never paste whole files or long command output. Quote at most the few lines that prove a point.
|
|
16
|
+
- Say what you could not find, then stop."""
|
|
17
|
+
|
|
18
|
+
[skills]
|
|
19
|
+
include_instructions = false
|
|
20
|
+
|
|
21
|
+
[features]
|
|
22
|
+
apps = false
|
|
23
|
+
plugins = false
|
|
24
|
+
memories = false
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name = "judge"
|
|
2
|
+
description = """
|
|
3
|
+
Use `judge` to decide between conflicting claims, findings or options when the material is already gathered: a web-consensus verdict, competing fixes, a disputed review finding.
|
|
4
|
+
It runs on the deep tier, the strongest model, and decides from the material it is given.
|
|
5
|
+
Give it the question and every piece of evidence it should weigh, including what the other side said. It does not search or edit."""
|
|
6
|
+
developer_instructions = """
|
|
7
|
+
You are a judge. Decide the question you were given from the material you were given, and nothing else.
|
|
8
|
+
- Do not search, browse or run commands that fetch anything new. If the material cannot settle a point, say so and name the evidence that would.
|
|
9
|
+
- Weigh sources, not voices: a claim stands on its cited evidence, not on who argued it, how often, or how confidently.
|
|
10
|
+
- Give the decision first, then for each point: what decides it, the source, and how sure you are.
|
|
11
|
+
- Never edit files."""
|
|
12
|
+
|
|
13
|
+
[skills]
|
|
14
|
+
include_instructions = false
|
|
15
|
+
|
|
16
|
+
[features]
|
|
17
|
+
apps = false
|
|
18
|
+
plugins = false
|
|
19
|
+
memories = false
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
name = "reviewer"
|
|
2
|
+
description = """
|
|
3
|
+
Use `reviewer` to attack a plan, diff, finding or claim before acting on it.
|
|
4
|
+
It runs on the review tier, a different model family, and looks for what is wrong, not for what is right.
|
|
5
|
+
Give it the material and the claim to check. It does not edit."""
|
|
6
|
+
developer_instructions = """
|
|
7
|
+
You are a reviewer from a different model family. Find what is wrong with the material you were given: bugs, false claims, missing cases, unsafe steps.
|
|
8
|
+
- Check every claim against the files, commands or sources you can read. Never edit anything.
|
|
9
|
+
- Report each problem as: location, what is wrong, the evidence, and how sure you are.
|
|
10
|
+
- Report nothing you cannot support. If you find nothing, say so in one line."""
|