by adand-91
Privacy-first AI project and Skill feedback loop for Codex and Claude Code—turn corrections into traceable requirements and verified repair plans.
# Add to your Claude Code skills
git clone https://github.com/adand-91/requirement-ledgerGuides for using ai agents skills like requirement-ledger.
requirement-ledger is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by adand-91. Privacy-first AI project and Skill feedback loop for Codex and Claude Code—turn corrections into traceable requirements and verified repair plans. It has 51 GitHub stars.
requirement-ledger's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/adand-91/requirement-ledger" and add it to your Claude Code skills directory (see the Installation section above). requirement-ledger ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
requirement-ledger is primarily written in Python. It is open-source under adand-91 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh requirement-ledger against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
The user names a Codex conversation, Agent Skill, project, or review window. Do not make the user remember and restate every problem. When the host exposes bounded task/history access, retrieve the related context it is already allowed to access. Otherwise request a selected task or bounded export and mark the missing coverage. Reconstruct the available history, discover what is worth improving, and preserve behaviour the user still relies on.
Choose one mode, then read review-modes.md and codex-context-discovery.md:
| Mode | Use when | Scope |
|---|---|---|
audit |
One conversation, Skill, Agent, or project needs improvement now | The named target and directly related history |
daily |
Review yesterday and find the next improvement | Codex projects active in the configured workday window |
weekly |
Review the week and compare GitHub or industry developments | Final daily reviews, unresolved evidence, and source-bound ecosystem research |
When the target is an Agent Skill, also load the detailed personalisation workflow. Use the packaged evidence pipeline for explicit files, retained private evidence, or digest-bound validation.
The product is a loop, not an autonomous patch bot:
named target or review window
-> host-mediated related-context discovery
-> private timeline and facts
-> conservative attribution
-> concrete DRAFT change cards
-> ordinary, visible Codex development under the user's authority
-> digest-bound frozen-oracle validation
-> retained outcome
The Codex host owns context discovery and semantic review. The packaged CLI owns explicit-file evidence and state separation. The host coding agent owns any authorised source change. Never blur those roles.
Lead with plain-language outcomes rather than making the user inspect architecture:
If evidence is insufficient, say what remains unknown; do not force the user to diagnose the
root cause. If the request is analysis-only, stop at the change card. If implementation is
authorised, use the host's visible Skill-maintenance workflow and show the final diff and
validation result.
audit, or an explicit time window for daily / weekly. Invoking a
time-window mode permits metadata enumeration of Codex projects active only in that window; it
does not permit unrelated or disk-wide discovery.~/.codex, ~/.claude, a home directory, or a disk.codex-scan: bind one non-home scope root, one non-path
target/task reference, one IANA timezone, and one half-open window. The scope root is containment,
never permission to enumerate files.unknown is a successful, honest attribution result.The normative product and error-code contract is in V0.1_CONTRACT.md; load it whenever changing the pipeline or its permissions. The Codex host and three-mode boundary is in V0.2_HOST_CONTRACT.md.
Record these before using tools:
“Look, investigate, audit, give me a plan” stops before source modification. “Fix, implement, start, go ahead” authorises the stated local implementation scope, not commit, push, Issue, PR, Release, telemetry, or publication.
If “BUG version” or a similar label is ambiguous, record the working inference. Ask only when a different interpretation would materially change the build; the safe evidence stages can proceed.
Prefer the installed console command; from a checkout, use
PYTHONPATH=src python3 -m requirement_ledger.
requirement-ledger doctor --repo /exact/project/root
The expected state is READY_READONLY. Capture git status --porcelain=v1 --branch separately
under the host's normal Git safety rules and preserve all pre-existing user changes.
Stop on a missing/non-root/bare repository, unsafe path, unresolved project identity, or a scope that would cross into another repository.
Never place the bundle in an Issue attachment or a chat response. Prefer a user-private temporary directory outside the repository.
requirement-ledger scan \
--repo /exact/project/root \
--input /exact/allowed/session.jsonl \
--test-log /exact/allowed/existing-test.log \
--output /private/location/project-evidence.private.json
Use --provider codex|claude|text only when auto-detection cannot identify a custom filename.
JSONL --since/--until windows are event-level ISO-8601 filters. Plain text has no timestamps
and must not be given a time window.
For a selected Codex export, create the input boundary and private evidence in one operation:
requirement-ledger codex-scan \
--repo /exact/project/root \
--input /approved/exports/selected-task.jsonl \
--scope-root /approved/exports \
--target conversation:skill-audit \
--task-ref task:opaque-reference \
--since 2026-08-29T08:00:00+08:00 \
--until 2026-08-30T08:00:00+08:00 \
--timezone Asia/Shanghai \
--exclude unrelated \
--output /private/location/codex-evidence.private.json
Do not substitute a filesystem root or the user home for --scope-root. Do not discover other
files under it. Target/task references are hashed and not stored verbatim. The embedded envelope
stores digest/count/provenance metadata without source text, file names, or paths; the surrounding
evidence remains private and may contain selected text.
Oversized, malformed, or dropped events make the source incomplete. Do not “fill in” missing content from memory, and do not promote an issue from incomplete evidence.
requirement-ledger analyze \
--evidence /private/location/project-evidence.private.json \
--output /private/location/project-analysis.json
The CLI deliberately emits conservative candidates. Review the private evidence locally and keep these labels separate:
| Label | Meaning |
|---|---|
SAID |
directly observed user/event/Git fact |
INFERRED |
the agent's interpretation, explicitly marked |
UNKNOWN |
not established by the allowed evidence |
For every issue record the earliest relevant requirement, the correction or failure evidence, the suspected scope, final scope, exclusions actually checked, completeness, and one observable reproduction. The original evidence discipline remains in evidence-rules.md and real-requirement.md.
Attribution confirmation is deliberately expensive:
upstream: independent projects/sessions with the same provider/version, a clean minimal
reproduction, and project/personal/environment/custom-prompt causes excluded;project-local: direct repository evidence and a clean comparison where it does not reproduce
outside the project;personal: separately authorised personal-config evidence or a clean-config comparison;unknown: everything else, including a single complaint or isolated failure.requirement-ledger report \
--analysis /private/location/project-analysis.json \
--output /review/location/project-report.md
requirement-ledger suggest \
--analysis /private/location/project-analysis.json \
--output /private/location/project-proposals.json
The report omits raw quotes and local identifiers, but still needs a human privacy review. The
proposal is DRAFT — NOT SENT and every action is not-applied.
Each repair plan must contain: issue/evidence references, files or subsystem likely involved, the smallest change hypothesis, regression test, frozen oracle descriptor and digest, rollback, prohibited actions, and the evidence that would disprove the hypothesis. A vague “improve the code” is not a plan.
If the user only authorised diagnosis, stop here.
When local implementation is explicitly authorised, return to the ordinary coding workflow:
AGENTS.md/CONTEXT.md/handoff and inspect its dirty worktree;The CLI intentionally cannot perform these steps. Host sandboxing, repository instructions, and the user's current implementation authority govern them.
Create two small local JSON records from the externally run frozen oracle. Both records and the CLI use the same 64-hex digest of the frozen descriptor:
{"oracle": "one-stable-name", "oracle_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "exit_code": 1}
{"oracle": "one-stable-name", "oracle_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "exit_code": 0}
Then compare them without re-running project code:
requirement-ledger verify \
--oracle one-stable-name \
--oracle-digest aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
--baseline /private/location/baseline.json \
--after /private/location/after.json \
--output /private/location/validation.json
improved requires the same oracle name and digest to fail before and pass after. Baseline pass
then after fail is regressed; identical outcomes are unchanged; mismatches, malformed records,
and ambiguous failures are
inconclusive. Never convert “command ran” into “fix verified”.
Finish with a scope ledger from the earliest valid request: done / partial / cancelled / blocked.
Refresh the project's handoff after the final program change.
Only confirmed upstream findings are candidates for maintainer feedback. Generate a minimal,
anonymous DRAFT — NOT SENT; a human reviews and sends it under separate authority. Never paste
the private bundle or a raw local log.
Repeated commands and corrections are automation candidates, not automatic Skills. Apply the stable-judgement, existing-capability, script-vs-Skill, and recurrence filters in skill-extraction.md. Changing or creating a real Skill follows the host's Skill-maintenance rules and needs implementation authority.
The original retrospective scripts remain available when the user specifically wants to recover requirements, mistakes, and repeated work from a past session:
python3 scripts/scan_transcript.py path/to/session.jsonl
python3 scripts/check_retro_report.py path/to/report.md
Treat all legacy output as private. Legacy --no-text removes bodies but can retain paths,
session metadata, and command shapes; it is not share-safe. For new project-optimiser work, use
the packaged explicit-input pipeline.
upstream or guessing personal without authorised config evidence.Additional retrospective anti-patterns are in anti-patterns.md.
Requirement Ledger has a stable explicit-evidence v0.1.1 and a v0.2.0-alpha.2
prerelease for bounded Codex inputs. When the host exposes bounded task history, name a Codex
conversation, Agent Skill, or project and the Skill can recover related context, prepare concrete
change cards, and compare the same case before and after an authorised edit. The Python package
does not yet ship its own Codex history adapter.
中文说明 · v0.1 CLI contract · v0.2 host contract · Alpha 2 release notes · Codex alignment research · update map · roadmap · open gaps · security
Requirement Ledger does not autonomously edit your project. The CLI gathers and structures evidence; Codex remains the developer, and every real modification stays visible and reviewable.
After installing the Skill, the user names the target rather than diagnosing it:
Use Requirement Ledger to audit this Skill. Find its related Codex history, tell me what should improve, preserve what already works, and show me the change cards before editing anything.
The Codex host should locate the target, find only its related authorised tasks and project records, reconstruct the work history, explain the problems without jargon, preserve working behaviour, prepare small change cards, and stop for authorisation before editing. The user does not need to remember the failures or design YAML, prompts, tests, or repository architecture.
one named target
-> related Codex history
-> repeated problems and personal preferences
-> what must stay
-> concrete change cards
-> authorised visible edit
-> same success and boundary cases before/after
See the three review modes, Codex context discovery, the beginner Skill-personalisation workflow, and the fully synthetic walkthrough.
| Mode | Say this | What it does |
|---|---|---|
| One-time audit | “Audit this conversation / Skill / project.” | Finds related history, prioritises problems, and prepares change cards |
| Daily review | “Review yesterday with Requirement Ledger.” | Reconstructs the previous workday, checks earlier changes, and recommends one improvement |
| Weekly review | “Run the weekly Requirement Ledger review.” | Deduplicates the week, checks maintenance health, and links relevant GitHub or official industry changes |
Alpha 2 keeps the Alpha 1 audit scaffold and checker, and adds one installed
codex-scan path for an explicitly selected export. Daily and weekly are documented host
contracts and reference templates, not initialisation modes in this prerelease. A one-time audit
stays on the named target. Future daily and weekly modes may enumerate Codex projects active only
in their explicit time window. If the host cannot retrieve history, it must ask the user to select
a task or bounded export rather than claim complete coverage.
Requirement Ledger AI is the guide and evidence layer, not a hidden patch bot.
codex-scan binds exactly one selected Codex JSONL export to a non-home scope root, non-path
target/task references, an explicit IANA timezone, and a half-open [start,end) window.codex-input-envelope/v1 with exact source
digest/size, hashed target/task bindings, physical record accounting, fixed exclusions, and
deliberately partial target-history coverage. It never claims that one export is the complete
Codex history.review-init and review-check remain available and compatible. See the
Alpha 2 release notes for the exact limits and gates.AI-assisted projects usually lose the most valuable information they produce:
Requirement Ledger makes that loop explicit:
explicit Codex/Claude/text input + test log + read-only Git snapshot
-> private evidence
-> conservative attribution
-> quote-free report + DRAFT repair plan
-> host-owned Codex patch
-> digest-bound oracle before/after result
It works with ordinary software projects. The target does not have to use AI, Python, or this Skill; only the evidence collector itself is Python.
requirement-ledger command for Python 3.10–3.13.SourceRef, EvidenceItem, IssueRecord, FixProposal, and ValidationResult
records.upstream, project-local, personal, unknown — with
unknown as the honest default.DRAFT — NOT SENT, not-applied repair plans. No hidden patch, commit, push, Issue, PR,
Release, upload, or telemetry.Clone the repository, then install the package locally:
git clone https://github.com/adand-91/requirement-ledger
cd requirement-ledger
python3 -m pip install .
requirement-ledger --version
The runtime uses only the Python standard library on systems with an IANA timezone database.
Windows installs the standard tzdata package conditionally because Windows does not ship that
database. Build isolation may fetch build tooling; a prepared offline Windows environment must
include tzdata before using python3 -m pip install --no-build-isolation --no-deps ..
To install this exact prerelease without cloning:
python3 -m pip install \
https://github.com/adand-91/requirement-ledger/releases/download/v0.2.0-alpha.1/requirement_ledger-0.2.0a1-py3-none-any.whl
The repository is also a self-contained agent Skill:
# Codex
git clone https://github.com/adand-91/requirement-ledger ~/.codex/skills/requirement-ledger
# Claude Code
git clone https://github.com/adand-91/requirement-ledger ~/.claude/skills/requirement-ledger
The Skill tells the host when to gather evidence, when to stop at a proposal, and how to hand a reviewed plan back to the ordinary coding workflow. It does not grant new permissions.
This command does not inspect a repository, a home directory, or a real conversation:
requirement-ledger demo --output-dir /tmp/requirement-ledger-demo
find /tmp/requirement-ledger-demo -maxdepth 1 -type f -print
It writes five files:
01-evidence.private.json raw synthetic evidence; private format
02-analysis.json conservative issue candidates
03-proposals.json DRAFT — NOT SENT, not-applied plans
04-report.md quote-free report; still needs human privacy review
05-validation.json synthetic baseline-fail -> after-pass result
The source fixtures are in examples/anonymous.
Choose the exact repository and exact evidence files yourself. Storing private evidence outside the project is recommended:
requirement-ledger doctor --repo /path/to/project
requirement-ledger scan \
--repo /path/to/project \
--input /path/to/explicit-codex-or-claude-session.jsonl \
--test-log /path/to/existing-test-output.log \
--output /tmp/project-evidence.private.json
requirement-ledger analyze \
--evidence /tmp/project-evidence.private.json \
--output /tmp/project-analysis.json
requirement-ledger report \
--analysis /tmp/project-analysis.json \
--output /tmp/project-report.md
requirement-ledger suggest \
--analysis /tmp/project-analysis.json \
--output /tmp/project-proposals.json
scan never discovers ~/.codex, ~/.claude, or other projects. JSONL provider detection is
automatic; use --provider codex|claude|text when a custom filename is ambiguous. Time windows
are ISO-8601 and apply to individual JSONL events. Plain text has no timestamps, so it rejects
time-window flags instead of pretending.
For a Codex export that needs an auditable input boundary, use the Alpha 2 candidate path instead of provider auto-detection:
requirement-ledger codex-scan \
--repo /path/to/project \
--input /approved/exports/selected-task.jsonl \
--scope-root /approved/exports \
--target conversation:project-audit \
--task-