Agent skill

Pre Release

by paiml in paiml/aprender

Pre-release QA for apr-cli — runs all gates that prevent crates.io publish breakage

MITAuto-check passedDevelopment

Install Pre Release

skills CLI
$ npx skills add paiml/aprender --skill pre-release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install paiml/aprender pre-release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/paiml/aprender.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pre-release .claude/skills/pre-release && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pre-release
GitHub stars
127
Token cost
~4.3k tokens
SKILL.md length
2,054 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Pre-release QA for apr-cli — runs all gates that prevent crates.io publish breakage

  • Works in 3 steps: Check declared MSRV: grep rust-version… → Check actual toolchain: rustc --version → Verify both Cargo.toml files declare the…
  • Development work in your project
  • SKILL.md covers Context, Three documents, three scopes…, Your Task and Verdict
  • Calls cargo, bash and git

What it does

Pre Release is an agent skill from paiml/aprender. Pre-release QA for apr-cli — runs all gates that prevent crates.io publish breakage

Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with Rust. The repository describes itself as: Next Generation Machine Learning, Statistics and Deep Learning in PURE Rust. The licence is MIT.

When your agent uses it

  • Development work in your project

Example prompts

  • “/pre-release”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Bash(cargo:*), Bash(grep:*), Bash(make:*), Bash(bash:*), Bash(batuta:*), Bash(pmat:*), Bash(git:*), Bash(head:*), Bash(tail:*), Bash(wc:*), Bash(cat:*), Bash(awk:*), Bash(sed:*), Bash(diff:*), Bash(rustup:*), Read, Glob, Grep

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Check declared MSRV: grep rust-version Cargo.toml crates/apr-cli/Cargo.toml
  2. Check actual toolchain: rustc --version
  3. Verify both Cargo.toml files declare the same MSRV

What it can do on your machine

Read from SKILL.md and the folder at commit 828ccb8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(cargo:*)
    • Bash(grep:*)
    • Bash(make:*)
    • Bash(bash:*)
    • Bash(batuta:*)
    • Bash(pmat:*)
    • Bash(git:*)
    • Bash(head:*)
    • Bash(tail:*)
    • Bash(wc:*)

    …and 8 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo
    • bash
    • git
    • python3
    • make
    • rustc

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pre Release loads about 4.3k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 2,054 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~4.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from paiml/aprender at commit 828ccb8, republished under its MIT licence (© paiml). 2,054 words, ~4,286 tokens.

Download SKILL.mdSave it as .claude/skills/pre-release/SKILL.md (or your agent's skills folder).
name
pre-release
description
Pre-release QA for apr-cli — runs all gates that prevent crates.io publish breakage
allowed-tools
Bash(cargo:*), Bash(grep:*), Bash(make:*), Bash(bash:*), Bash(batuta:*), Bash(pmat:*), Bash(git:*), Bash(head:*), Bash(tail:*), Bash(wc:*), Bash(cat:*), Bash(awk:*), Bash(sed:*), Bash(diff:*), Bash(rustup:*), Read, Glob, Grep
effort
high

Context

  • Current apr-cli version: !grep '^version' crates/apr-cli/Cargo.toml | head -1
  • Published version: !cargo search apr-cli 2>/dev/null | head -1
  • Current branch: !git branch --show-current
  • Uncommitted changes: !git status --short | wc -l
  • Test count: !cargo test -p apr-cli --lib 2>&1 | grep 'test result' | tail -1

Three documents, three scopes — and only one of them is the fleet protocol

Written down because three skills describe overlapping release work and the duplication is harder to see in prose than in code: nothing runs it, and no diff surfaces it (aprender#2640, D6).

skillscopesource of truth for
dogfood (.claude/skills/dogfood/SKILL.md)ANY Rust crate in the fleetthe generic pre-release protocol and scripts/dogfood.sh
apr-dogfoodthis repo's shipped surfacegate coverage against the surface ledger
pre-release (this file)apr-cli onlythe crates.io publish gates below

Do not restate a gate that lives in another of the three. If a gate here also belongs to the fleet protocol, it belongs in scripts/dogfood.sh and this file should reference it — that is exactly how the runner came to exist twice.

Run all independent gates in parallel where possible.

Your Task

Run the apr-cli pre-release QA checklist below. This checklist was derived from 5 historical release failures (CB-510, PMAT-262, GH-342, GH-343, GH-344/345) using Five-Whys root cause analysis on git history.

For each gate, run the check, report PASS/FAIL, and if FAIL explain the root cause and how to fix it. At the end, give a GO/NO-GO verdict.

Run all independent gates in parallel where possible.

Gate 1: Package Integrity (CB-510)

Verify all include!() files are tracked by git and included in the cargo package:

bash scripts/check_include_files.sh
bash scripts/check_package_includes.sh

If either fails, files will be missing from crates.io publish.

Gate 2: No External Path Dependencies (GH-344, PMAT-262)

Check that committed Cargo.toml files have NO external path = "../ references (sibling repos). Only intra-workspace path = "../.." is allowed:

grep -n 'path = "\.\./\.\.' Cargo.toml crates/apr-cli/Cargo.toml | grep -v '../..'

Any external path deps mean cargo install apr-cli will fail for users who don't have sibling repos.

Gate 3: Stale cfg Gate Audit (GH-342)

Search for #[cfg( attributes on pub/pub(crate) functions in apr-cli that might hide essential code:

grep -rn '#\[cfg(' crates/apr-cli/src/ --include='*.rs' | grep -v test | grep -v '// ' | grep -v '#\[cfg(test' | grep -v '#\[cfg(not(feature'

Review each cfg gate. Common failure: #[cfg(all(feature = "inference", feature = "cuda"))] applied to utility functions that should always be available. Cross-reference with the feature flags in crates/apr-cli/Cargo.toml to verify.

Gate 4: MSRV Verification (GH-343)

Verify the declared rust-version is accurate:

  1. Check declared MSRV: grep rust-version Cargo.toml crates/apr-cli/Cargo.toml
  2. Check actual toolchain: rustc --version
  3. Verify both Cargo.toml files declare the same MSRV
Gate 5: Standalone Package Build (GH-344/345) — STAGE-DEPENDENT (#2543)

Read this before running it. cargo package re-resolves every dependency against crates.io, so each workspace sibling resolves to its already published copy rather than to this tree. apr-cli has 26 workspace-sibling dependencies, five of which publish in the LAST cascade tier — so Gate 5 for apr-cli is not merely "late", it is meaningful only after the cascade has finished. Run it at the wrong stage and you get dozens of symbol-not-found errors:

error[E0432]: unresolved import `aprender::format::q4k_output_size_estimate`
error[E0432]: unresolved import `entrenar_lora::plan_with_rank`
error[E0433]: could not find `CancelToken` in `generate`

Those three symbols are genuine post-0.63.0 additions (verified against the published 0.63.0 tarballs). Nothing is broken. Do not abort a cut over this.

STAGE-PRECONDITION: cargo package -p apr-cli requires stage CASCADE_READY STAGE-PRECONDITION: cargo package -p apr-format requires stage MEANINGFUL

Ask the tree which stage it is at before interpreting any result:

bash scripts/check_gate5_stage.sh --explain apr-cli
VerdictWhat Gate 5 means right now
MEANINGFULNo workspace-sibling deps. A failure is a real defect.
PRE_BUMPThe workspace version is already on crates.io, so siblings resolve to the stale API at the same version number. Symbol errors are expected. Bump, then re-check.
POST_BUMP_PRE_CASCADEVersion bumped, siblings not published at it yet. Cargo says failed to select a version … candidate versions found which didn't match — not no matching package named, which is the distinct error for a crate that was never published at all. Expected until the cascade reaches them.
CASCADE_READYEvery sibling is live at this version. A failure here is a real defect.

The stage-independent substitute. apr-format is a workspace leaf with zero sibling dependencies, so it packages identically at every stage and still proves the tarball/include!()/manifest machinery works:

cargo package -p apr-format --allow-dirty 2>&1 | tail -5

Run that pre-bump. Run the real gate

cargo package -p apr-cli --allow-dirty 2>&1 | tail -5

only once check_gate5_stage.sh --explain apr-cli reports CASCADE_READY — i.e. at the END of the publish cascade, not at apr-cli's own tier. apr-cli is tier 10 of 13 in scripts/cascade-publish.sh but depends on five crates that publish in tier 13, so tier 10 is still too early.

Do NOT substitute Gate 11 here. Gate 11 is itself pre-bump-only: after the version bump cargo publish -p aprender --dry-run --no-verify fails with the very candidate versions found which didn't match string Gate 11's own text declares a FAILURE.

The old wording of this gate said "if it fails, cargo install apr-cli will fail for users". That is false pre-bump — apr-cli 0.63.0 built fine on docs.rs from published deps alone while this gate was red on the tree.

Enforced by scripts/check_gate5_stage.sh (contract contracts/publish-workspace-v1.yaml, FALSIFY-PUB-005/006/007).

Gate 6: Test Suite

Verify all tests pass:

cargo test -p apr-cli --lib 2>&1 | tail -3
Gate 7: Formatting + Clippy
cargo fmt -p apr-cli -- --check

Report any formatting issues (don't fix them — just report).

Gate 8: Version Bump Check

Verify the local version is GREATER than the published crates.io version. If not, the publish will fail.

Compare local version from crates/apr-cli/Cargo.toml against cargo search apr-cli.

Gate 9: batuta bug-hunter Scan

Run static analysis for high-severity findings:

batuta bug-hunter analyze crates/apr-cli/ --format json 2>/dev/null | python3 -c "
import sys, json
data = json.load(sys.stdin)
findings = data.get('findings', [])
high = [f for f in findings if f.get('severity') == 'High']
categories = {}
for f in high:
    cat = f.get('category', 'Unknown')
    categories[cat] = categories.get(cat, 0) + 1
print(f'High findings: {len(high)}')
for cat, count in sorted(categories.items(), key=lambda x: -x[1]):
    print(f'  {cat}: {count}')
# Flag non-false-positive categories
real = {k: v for k, v in categories.items() if k not in ['SecurityVulnerabilities']}
if any(v > 0 for v in real.values()):
    print(f'WARNING: {sum(real.values())} non-security High findings need triage')
"

SecurityVulnerabilities are expected (CLI takes file paths — not a web service). Focus on HiddenDebt, MemorySafety, SilentDegradation, LogicErrors.

Gate 10: Sibling Repo Versions (GH-345)

If sibling repos are present, verify their versions are compatible:

make check-siblings 2>&1
Gate 11: crates.io Cascade Publishability (v0.50.0 dev-dep cycle + missing-version)

The v0.50.0 cascade FAILED MID-PUBLISH (29/68 crates live, then stuck) on two classes that path-deps mask and cargo metadata does NOT catch: (a) sibling path-deps with NO version field — cargo publish requires a version on every non-dev dep (locally the path resolves, so it builds fine; publishing errors dependency X does not specify a version); (b) version-pinned sibling DEV-dependencies forming publish CYCLES — cargo tolerates dev-dep cycles when building locally, but crates.io rejects them (failed to select a version ... candidate versions found which didn't match). Two unused dev-deps (trueno-viz, renacer) closed real cycles.

Only a real publish dry-run of the FLAGSHIP resolves the whole 68-crate tree against the registry:

cargo publish -p aprender --dry-run --allow-dirty --no-verify 2>&1 | tail -6

PASS if it reaches Packaged/Uploading with NO does not specify a version and NO candidate versions found which didn't match. FAIL on either: a sibling path-dep needs a version field, or a sibling dev-dep must be made path-only (no version) so cargo strips it from the published manifest and the cycle breaks. Also dry-run apr-cli, aprender-core, aprender-serve if aprender passes, to confirm the foundational tier. See memory/feedback_crates_io_devdep_publish_cycles.md.

Gate 11 is PRE-BUMP ONLY (#2543). Its pass criterion is stage-dependent in the mirror image of Gate 5: once the workspace version is bumped, every crate — including the flagship aprender — dry-runs to failed to select a version for the requirement … candidate versions found which didn't match, because no sibling is published at the new version yet. That is the exact string this gate declares a FAILURE, so post-bump Gate 11 self-reports a defect that does not exist. Run Gate 11 before cargo set-version; after the bump, the equivalent signal is Gate 5 on a zero-sibling crate plus scripts/check_gate5_stage.sh --explain <crate>.

Show full SKILL.md (878 more words)Show less
Gate 12: Multi-Platform Dogfood (MANDATORY — aprender#2566)
bash
bash scripts/check_multiplatform_dogfood.sh

Every release is dogfooded on EVERY supported platform, not just the one the release engineer is sitting at. This gate does not check that someone ran a sweep — it checks that a dated receipt exists for each host, for the version being cut. A receipt is evidence; a checklist tick is not. A receipt from a previous release is STALE and fails.

hostplatformwhy it is in the matrix
lambdax86_64 Linux + RTX 4090 (sm_89)consumer x86, AVX2 path
intelx86_64 Linux, Xeon W-3245AVX-512 + VNNI path
gx10aarch64 Linux + GB10 (sm_121)ARM server, unified memory
miniarm64 macOS + MetalApple silicon, no /proc, APFS case-insensitive

Each host is in the matrix because it is a distinct combination of ISA, OS and accelerator — not because we happen to own it.

What one afternoon of this bought (the 0.64.0 cut). The published crate had never been verified on either arm64 platform:

  • #2567 — Q4_K GEMV, the hottest kernel in quantized inference, has zero aarch64 SIMD, and matmul_q4k_f32_parallel on non-x86 is a direct call to the serial scalar routine. The numbers are correct and only the speed is wrong, so no correctness gate could ever have caught it.
  • #2568 — the OOM guard reads /proc/meminfo and .unwrap_or(u64::MAX), so on macOS the threshold becomes ~12.8 exabytes and the guard can never fire. Its only test self-skips with cfg!(target_os = "linux") — the platform where it is broken.
  • #2572 — block v0.1.6 faces future-rustc rejection and sits under wgpu -> metal, the only GPU backend macOS has. Entirely absent from the Linux dependency graph.

Each is invisible from a single host by construction. That is the argument for this gate: not diligence theatre, but the only way to see this class of defect.

PHASE. This gate's subject is the PUBLISHED ARTIFACT, so it cannot be satisfied before the cascade. install_rc is the exit status of cargo install aprender, which resolves from crates.io — a pre-cut receipt would have to install a version that does not exist yet. The evidence for that is the repo's own history: 0.63.0 published 2026-08-01 and its receipts are dated 2026-08-22, and until 0.64.0 this gate had never passed for any release. It is a RELEASE-COMPLETION gate, not a cut gate (aprender#2658).

So a release is not complete until every declared host carries a receipt for the exact version published. That is the andon: the cut may proceed on a GO from the other gates, and the release stays open until the sweep lands.

The bench field (aprender#2667). Each receipt also carries a bench block, and it is deliberately CPU-class, apr-vs-apr, with no comparator:

json
{"bench": {"samples_ms": [...], "n": 7, "runs_discarded": 0,
           "provenance": {"compute_class": "cpu", "binary_sha256": "...",
                          "resolution": "path", "feature_set": ["inference"]}}}

A llama.cpp ratio here would be uncomputable, not merely unwise. cargo install aprender builds CPU-only on all four hosts (crates/apr-cli/Cargo.toml default carries no cuda and no wgpu) while the comparator runs CUDA on lambda/gx10 and Metal on mini. The ratio would read ~0.05–0.10, nobody would red a release over it (correctly), the row would go EXISTENCE-ONLY and the threshold would never arm — the same shape as this gate before #2658. The tree already documents that collapse at crates/apr-cli/src/dispatch.rs:165: ratio_median=0.070x … a fabricated 14x regression with nothing wrong in apr's decode path.

An apr-vs-apr self-ratchet catches our own regressions, which is the actual goal, without inventing a number nobody will act on. The comparator ratio lives in the pre-publish phase, from the tree, where --features cuda exists.

Threshold. Derived per host by bootstrap over the recorded raw samples, armed only once ≥3 receipts carrying a bench block exist at origin/main for that host. No human types a number. Do not use 3 × pooled relative stddev: it returns GREEN on the only regression this repo has on record, and its power falls as data accumulates (aprender#2675, falsified by execution in scripts/check_bench_threshold.sh).

Recording a receipt. Run the sweep on the host, then write evidence/dogfood/<version>/<host>.json with at least:

json
{"host":"gx10","arch":"aarch64-unknown-linux-gnu","version_tested":"0.64.0",
 "date":"2026-08-22","install_rc":0}

Richer fields (surface counts, findings, notable, verdict) are encouraged — the receipts already under evidence/dogfood/ are the worked examples.

The tracked implementation of this step is scripts/release/host_receipt.sh, which scripts/release/autopilot.sh ships to each host after publish (#3731). Never hand-roll the sweep; scripts/check_dogfood_shim.sh row 1b allows those two scripts only while this paragraph names them.

The sweep must cargo install the PUBLISHED crate, not build the local tree. Building the tree tests what you have; installing tests what a user gets. On a box with a pre-existing apr the install correctly fails closed (rc=101) before compiling — use --force and record that in the receipt.

Watch the CI host. intel runs all 16 self-hosted runners. Build there with -j 6, not the default 32: the merge-queue timeout counts runner wait, so a build that steals cores is indistinguishable from a flake and can evict queued PRs.

Non-vacuity: the gate refuses a matrix of fewer than 4 hosts, because a shrinking matrix silently narrows what "verified" means. Mutation-verified in all three directions — a stale receipt version, a non-zero install_rc, and a shortened host list each turn it RED.

Verdict

After running all gates, provide:

  1. A summary table: Gate | Status | Notes
  2. GO if all gates pass (or only have known-false-positive failures)
  3. NO-GO with specific blocking issues if any real gate fails
  4. If NO-GO, list the exact commands to fix each failure

Do NOT publish or modify any files. This is a read-only audit.

© paiml, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/pre-release of paiml/aprender.

Open the folder on GitHubat commit 828ccb8

Compare with similar skills

Pre Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pre Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pre Release this skillpaiml/aprender127—~4.3kAutomated safety check: PassMIT
Migrate Core Code to Submodulestinyhumansai/openhuman42k—~2.6kAutomated safety check: PassGPL-3.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT
OpenLogi macOS Permissions TriageAprilNEA/OpenLogi23k—~2.5kAutomated safety check: NotesApache-2.0
RTK Rust Design Patternsrtk-ai/rtk83k—~1.9kAutomated safety check: PassApache-2.0
Release Skillsnexmoe/eve4213 repos~3.3kAutomated safety check: PassNone

Similar skills

  • Migrate Core Code to Submodules

    tinyhumansai/openhuman

    Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.

    42k GitHub stars~2.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.

    23k GitHub stars~2.5k tokensUpdated 4 days ago
    DevelopmentAuto-check: notes
  • Describes seven Rust design patterns for the RTK CLI filter modules, with when to use each, RTK examples, and notes on when a pattern is overkill.

    83k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release Skills

    nexmoe/eve

    Universal release workflow. An agent skill from nexmoe/eve.

    421 GitHub starsUsed in 3 repos~3.3k tokens
    DevelopmentAuto-check passed
  • Pnpm Engine

    teambit/bit

    Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.

    18k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed

More from paiml/aprender

  • Find Contracts

    paiml/aprender

    Find which provable-contracts YAML contracts a Hugging Face model needs, create missing contracts, generate Rust artifacts, and implement all stubs.

    127 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Dogfood

    paiml/aprender

    Sovereign-stack PRE-RELEASE protocol. An agent skill from paiml/aprender.

    127 GitHub stars~13k tokensUpdated today
    Auto-check passed
  • Apr Dogfood

    paiml/aprender

    Dogfood the aprender release surface — derive every interface from the built binaries, measure gate coverage against the surface ledger, exercise the covered set, and emit a go/no-go receipt

    127 GitHub stars~21k tokensUpdated today
    Auto-check passed
  • Code Quality Review

    paiml/aprender

    A skill your agent uses to perform a comprehensive code quality and architecture review of the current project or repository, identifying code smells, architectural debt, performance bottlenecks…

    127 GitHub stars~626 tokensUpdated today
    Auto-check passed
  • PR Review

    paiml/aprender

    Adversarial PR review that must show HOW it knows — five consultations (one of them a reviewing agent from a different vendor), a three-state availability encoding no prose can fake, and a signed…

    127 GitHub stars~18k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Pre Release

What does Pre Release do?

Pre-release QA for apr-cli — runs all gates that prevent crates.io publish breakage. Pre Release is an agent skill from paiml/aprender.

When should I use Pre Release?

Pre Release fits situations like: development work in your project.

How do I install Pre Release in Claude Code?

Run `npx skills add paiml/aprender --skill pre-release -a claude-code`. Or copy the skill folder (.claude/skills/pre-release in paiml/aprender) into .claude/skills/pre-release in your project. Claude Code loads it when a task matches its description.

How do I install Pre Release in Codex?

Run `npx skills add paiml/aprender --skill pre-release -a codex`. Or copy the skill folder (.claude/skills/pre-release in paiml/aprender) into .agents/skills/pre-release in your project. Codex loads it when a task matches its description.

Can I use Pre Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add paiml/aprender --skill pre-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pre-release, .gemini/skills/pre-release, .github/skills/pre-release and .opencode/skills/pre-release in your project.

What does Pre Release need to run?

Going by SKILL.md and its folder, Pre Release needs the command-line tools its instructions call (cargo, bash, git, python3, make and rustc). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash(cargo:*), Bash(grep:*), Bash(make:*), Bash(bash:*), Bash(batuta:*), Bash(pmat:*), Bash(git:*), Bash(head:*), Bash(tail:*), Bash(wc:*), Bash(cat:*), Bash(awk:*), Bash(sed:*), Bash(diff:*), Bash(rustup:*), Read, Glob, Grep.

Does Pre Release access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Pre Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pre Release use?

Pre Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pre Release use?

About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pre Release?

Skills that share tags, products or a category with Pre Release: Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars), Rust Best Practices (farm-fe/farm, 5.6k stars), OpenLogi macOS Permissions Triage (AprilNEA/OpenLogi, 23k stars) and RTK Rust Design Patterns (rtk-ai/rtk, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pre Release?

paiml (a GitHub organization) maintains it in paiml/aprender, which has 127 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.

Source: paiml/aprender on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.