Borrowing it
Nothing to install: this file belongs to extracurricular-ai/codex-rewind. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/extracurricular-ai/codex-rewind/main/.codex/skills/path-types/SKILL.mdgit clone --depth 1 https://github.com/extracurricular-ai/codex-rewindWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/extracurricular-ai/codex-rewind/path-types)<a href="https://agentmods.dev/skills/extracurricular-ai/codex-rewind/path-types"><img src="https://agentmods.dev/badge/skills/extracurricular-ai/codex-rewind/path-types/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/extracurricular-ai/codex-rewind/path-types"><img src="https://agentmods.dev/badge/skills/extracurricular-ai/codex-rewind/path-types.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00029 | $0.00507 |
| Opus 5.5 | $0.00012 | $0.00203 |
| Sonnet 5.5 | $0.00006 | $0.00101 |
| Haiku 4.5 | $0.00003 | $0.00051 |
Grade A, and why
path-types scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to path-types — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 44 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Path Types
Apply this guidance when defining new types. Change existing code only when explicitly requested, and keep edits minimal and proportional. Treat these rules as the target state of an ongoing migration; if compliance is difficult, ask the user how to proceed.
- In app-server protocol types, use
LegacyAppPathStringfor backwards compatibility during the URI migration. At the protocol boundary, convert it toPathUriand usePathUriinternally. For host-local logic, such as some config values, useAbsolutePathBuforPathBufinstead. - In exec-server protocol types, use
PathUri. Internally, usePathUriorAbsolutePathBufas appropriate. - In dependencies shared by both servers, use
PathUrior separate APIs that decouple their use cases. - Tool call arguments that the model is expected to generate should be deserialized as regular
Strings with feature-specific path handling code.
Migration requirements
Keep these requirements in mind while migrating code to conform with the above guidelines:
- existing app-server clients keep sending and receiving legacy native-path strings
- app-server can retain and manipulate foreign-platform path URIs
- exec-server APIs use file:// URIs
- local-only operation must not change model-visible text
- model tool arguments may contain raw relative or absolute paths for any OS
- path reasoning must work before the related environment has come online
- URIs cannot explicitly encode the executor’s path convention or operating system
- users must not configure the environment’s OS/path convention explicitly
- URIs should not yet be stored in rollouts, databases, or other persistent storage
- path conversion errors: fail-closed for security-relevant paths, fail-open for UI/diagnostics
- prefer small focused methods on
PathUriorLegacyAppPathStringover local helpers - represent
PathUrivalues as URIs in diagnostics
It is OK if the conversion between paths and URIs is somewhat lossy as long as it will do the right thing for real users.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 44 lines · 29 tokens per session scan A 890145a2ee66
path-types is a skill published in the GitHub repository extracurricular-ai/codex-rewind (56 stars, last pushed 28d ago), licensed Apache-2.0. It adds 29 tokens to every session and 507 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to path-types, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
rust-async-concurrency
Use when writing async Rust — spawning tasks, sharing state across tasks/threads, choosing channels vs mutexes, or hitting Send-bound errors with async traits. Not for HTTP service structure (rust-web-backend) or sync-only ownership (rust-core-language).
rust-core-language
Use when writing or reviewing idiomatic Rust — edition 2024 ownership/borrowing design, or fixing LLM pitfalls (clone tax, unwrap infestation, indexed loops). Not for error-type design (rust-error-handling) or SOLID layout (solid-rust).
rust-ecosystem-crates
Use when choosing crates for a Rust project — serialization, CLI, async runtime, web, database, HTTP client, error handling, observability. Not for API usage details of an already-chosen crate.
rust-testing-quality
Use when writing, organizing, or running Rust tests — unit, integration, doc-tests, proptest, criterion benchmarks, or cargo-mutants. Not for CI pipeline wiring (rust-tooling-cicd).
rust-tooling-cicd
Use when structuring a Cargo workspace or building a Rust CI pipeline — fmt, clippy, cargo-deny/audit, nextest, coverage, MSRV. Not for writing the tests themselves (rust-testing-quality).
rust-web-backend
Use when building a REST/HTTP backend in Rust — axum routing, extractors, shared state, middleware, error responses, sqlx database access. Not for raw async/concurrency (rust-async-concurrency).