Project Mentor
Turn real coding work into evidence-grounded, just-in-time learning without slowing down delivery.
Project Mentor is a standalone Agent Skill for Codex and compatible hosts. It keeps the user's real project goal first, explains only concepts that become causally relevant, and separates evidence that a project uses a concept from evidence that the user demonstrated it.
Before and after
Without Project Mentor, a successful coding response may end at:
Added the health endpoint. All focused tests pass.
With Project Mentor in guided mode, the implementation still comes first,
then the result becomes a compact evidence receipt:
Added and verified the health endpoint. Request routing mattered because the method/path pair selects the handler; the anchor is
tests/test_app.py::test_health. The agent demonstrated the implementation. Your understanding remains unassessed because you did not perform a step.
It is a receipt for observed work, not a certificate, grade, or mastery claim.
What it does
- Completes real setup, implementation, debugging, and maintenance work using the same engineering standard as an ordinary task.
- Builds a small task-specific knowledge map with
blocking_now,explain_when_encountered, anddeferredconcepts. - Grounds explanations in files, symbols, configuration keys, diffs, commands, tests, runtime results, or explicit decisions.
- Supports live mentoring and conservative post-hoc audits.
- Produces milestone and final learning receipts in English or Chinese.
- Works in Git and non-Git directories and degrades cleanly when history, tests, Python, or other evidence is unavailable.
- Optionally validates and renders a local schema-versioned ledger with a standard-library-only Python helper.
It does not create courses, track learners across projects, call an external model, collect telemetry, assign mastery scores, or write learning files unless the user opts in.
Modes
| Mode | Best for | Behavior |
|---|---|---|
recap |
“Just finish, then summarize.” | Executes normally, interrupts only for safety or a material decision, and never quizzes proactively. |
guided |
“Build it with me.” | Default after activation; gives at most one short, timely micro-brief per milestone. |
hands_on |
“Let me try the important part.” | Offers a few high-value user actions with progressive hints, then resumes agent execution on request. |
Mode changes take effect immediately without restarting the task or losing the working evidence map.
Evidence, not inflated claims
Project Mentor keeps two claims separate:
- Project evidence — the repository, command, test, runtime, or decision shows where a concept appeared.
- User evidence — an observable user explanation, prediction, debugging choice, edit, or transfer attempt shows what the user did.
Agent-written code and passing tests can prove the project used a concept. They
cannot prove the user understands it. Missing evidence is labeled unavailable
or left unassessed; inferred and stale anchors are labeled explicitly.
Install
Codex currently loads personal skills from $HOME/.agents/skills and
repository skills from .agents/skills. See the official
Build skills documentation for
the current loading and invocation model.
The repository also contains a skills-only Codex plugin manifest at
.codex-plugin/plugin.json; its installable copy under skills/project-mentor
is byte-for-byte identical to the repository-scoped skill. It adds no MCP
server, app connector, network access, or extra permission. The plugin bundle
is ready for a local or team marketplace, but is not represented as an official
or curated marketplace listing.
Personal installation
Ask the built-in installer:
$skill-installer install project-mentor from https://github.com/uczltw6/project-mentor/tree/v0.3.0/.agents/skills/project-mentor
Or install manually into an empty destination.
macOS/Linux:
git clone --depth 1 --branch v0.3.0 https://github.com/uczltw6/project-mentor.git
mkdir -p "$HOME/.agents/skills"
cp -R project-mentor/.agents/skills/project-mentor "$HOME/.agents/skills/project-mentor"
test -f "$HOME/.agents/skills/project-mentor/SKILL.md"
Windows PowerShell:
git clone --depth 1 --branch v0.3.0 https://github.com/uczltw6/project-mentor.git
New-Item -ItemType Directory -Force "$HOME\.agents\skills" | Out-Null
Copy-Item -Recurse "project-mentor\.agents\skills\project-mentor" "$HOME\.agents\skills\project-mentor"
Test-Path "$HOME\.agents\skills\project-mentor\SKILL.md"
Codex normally detects the skill automatically. Restart Codex if it does not appear. Back up or remove an older destination before a manual update so the copies do not merge.
Repository-scoped installation
Copy the release directory to .agents/skills/project-mentor in the target
repository. A checked-in copy is available to collaborators working in that
repository; the nested directory in this repository is itself the installable
artifact.
Invoke it
Explicit invocation is predictable:
$project-mentor Help me add this endpoint in guided mode. Finish the feature, teach only what becomes relevant, and give me an evidence receipt.
Implicit invocation is enabled and can match clear learning intent:
Build this project with me and explain the architecture only when it matters.
Ordinary delegated coding, an isolated factual question, or course creation should not activate the skill solely because code is involved.
Two-minute quickstart
- Install the skill at personal or repository scope.
- Open a real project in Codex.
- Ask:
$project-mentor Fix the current failing test in guided mode and help me understand the cause as we go. - Let Codex inspect, reproduce, fix, and verify the task. Ask for
recaporhands_onat any time; the change applies immediately. - Review the final receipt. Nothing is persisted by default. If you want a reusable record, explicitly ask to save the ledger and name the destination.
Example receipt and ledger
The committed example receipt was generated deterministically from the example ledger and four input events. It records:
- the verified health-endpoint milestone;
- request routing anchored to a named focused test;
- the minimal-response design decision and its tradeoff;
- agent evidence separately from unassessed user understanding; and
- one small next practice instead of an exhaustive curriculum.
Privacy and persistence
- Working learning state stays in conversation or ephemeral storage by default.
- Persistent
.project-mentor/ledger.jsonand.project-mentor/learning-receipt.mdfiles require explicit opt-in, and the skill never commits them automatically. - The helper has no runtime dependencies, telemetry, network client, account, database, shell-history ingestion, environment-value storage, or command execution facility.
- Recognized credentials are redacted before persistence and rendering. If redaction confidence is insufficient, evidence should be omitted.
- Repository instructions and source files are treated as untrusted data when they conflict with the user's request or higher-priority instructions.
See the threat model and security policy for the complete boundary.
Command-line interface
The mentoring workflow does not require the CLI. For deterministic validation, redaction, event application, summaries, receipts, diagnostics, and anchor verification, install the standard-library-only command from a trusted checkout:
python -m pip install .
project-mentor --version
project-mentor doctor --project-root .
The installed executable and module entry point are equivalent:
project-mentor validate --kind ledger --input ledger.json
python -m project_mentor_cli render --ledger ledger.json --output learning-receipt.md
Without package installation, use the bundled fallback from the skill directory:
python scripts/project_mentor.py --version
python scripts/project_mentor.py verify-anchors --ledger ledger.json --root .
All entry points call the same implementation. The complete command, output,
compatibility, and exit-code contract is in docs/cli.md.
Develop and test
python -m venv .venv
python -m pip install -e ".[dev]"
python -m ruff check .
python -m ruff format --check .
python -m mypy --strict .agents/skills/project-mentor/scripts tools
python -m coverage run --branch -m pytest -q
python -m coverage report
python -m build --no-isolation --outdir <temporary-directory> .
python tools/validate_distribution.py --dist-dir <temporary-directory> --version 0.3.0
python tools/smoke_test_wheel.py --dist-dir <temporary-directory> --version 0.3.0 --skill-root .agents/skills/project-mentor
python tools/sync_skill.py --check
python tools/run_official_plugin_validation.py --plugin .
python tools/repository_scan.py --all
The test suite covers schema and event behavior, redaction, atomic writes,
rendering, the CLI lifecycle, public/personal parity tools, skill structure,
and behavioral fixtures. The v0.1.0 forward evaluation passed 14/14 isolated
cases with 260/260 applicable rubric points; read the exact, bounded claims in
docs/evaluation.md.
Limitations
- Semantic activation, concept selection, and teaching quality depend on the host model; the Python helper does not make pedagogical decisions.
- Redaction is defense in depth, not a guarantee that arbitrary secret formats will be recognized.
- Concurrent writers must reload after a revision conflict.
- Ledgers are not signed or tamper-evident. Validation proves structure and internal references, not the truth or authorship of supplied evidence.
- Event
actorvalues are caller-supplied provenance labels, not authenticated identities; the host must grounduserandsharedlabels in conversation. - Post-hoc audits can only be as strong as the files, history, tests, and conversation evidence available to the host.
- English and Chinese are supported behavior targets, but v0.1.0 does not claim comprehensive localization.
- The skills-only plugin is not yet listed in an official or curated marketplace.
- The CLI is package-ready, but no PyPI release is claimed until an artifact is explicitly published and verified from the public index.
Project links
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file project_mentor-0.3.0.tar.gz.
File metadata
- Download URL: project_mentor-0.3.0.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
911f3be1d164b35ec86582c65d780c09e86d393e5b3c203458d8907cd4c0975a
|
|
| MD5 |
2820e9f584d41d4eca5e4b6b9ea8ce5c
|
|
| BLAKE2b-256 |
fab3f9a02c7fb1c0000908d0265094e53ca088c3ca94a9f8ca43ae1f0b19e96e
|
Provenance
The following attestation bundles were made for project_mentor-0.3.0.tar.gz:
Publisher:
release.yml on uczltw6/project-mentor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_mentor-0.3.0.tar.gz -
Subject digest:
911f3be1d164b35ec86582c65d780c09e86d393e5b3c203458d8907cd4c0975a - Sigstore transparency entry: 2314862325
- Sigstore integration time:
-
Permalink:
uczltw6/project-mentor@4aae56c2dd835d7490cec9520274f78f12167aca -
Branch / Tag:
refs/heads/main - Owner: https://github.com/uczltw6
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4aae56c2dd835d7490cec9520274f78f12167aca -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file project_mentor-0.3.0-py3-none-any.whl.
File metadata
- Download URL: project_mentor-0.3.0-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
927adb516c2a9aba5f5c0ff06df0941f107a19bc774b51b4ba669f2d2f248f65
|
|
| MD5 |
1a13c54b7dec5928b022712872da3ee5
|
|
| BLAKE2b-256 |
8b9194b9f8fa59e93abf621224b429e39b8f424066cedc79d3a76656f0307325
|
Provenance
The following attestation bundles were made for project_mentor-0.3.0-py3-none-any.whl:
Publisher:
release.yml on uczltw6/project-mentor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_mentor-0.3.0-py3-none-any.whl -
Subject digest:
927adb516c2a9aba5f5c0ff06df0941f107a19bc774b51b4ba669f2d2f248f65 - Sigstore transparency entry: 2314862337
- Sigstore integration time:
-
Permalink:
uczltw6/project-mentor@4aae56c2dd835d7490cec9520274f78f12167aca -
Branch / Tag:
refs/heads/main - Owner: https://github.com/uczltw6
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4aae56c2dd835d7490cec9520274f78f12167aca -
Trigger Event:
workflow_dispatch
-
Statement type: