Skip to main content

v4-readiness

Generates a v4 upgrade readiness checklist for forks, ensuring operators are prepared for changes before the v4 release.

Install this skill

or
0/100

Security score

The v4-readiness skill was audited on Jun 14, 2026 and we found 30 security issues across 1 threat category, including 2 critical. Review the findings below before installing.

Categories Tested

Security Issues

high line 8

Template literal with variable interpolation in command context

SourceSKILL.md
8> **${var}** — Optional. Pass `dry-run` to skip the notification (article still writes, log still appends). Pass a fork repo slug (e.g. `someuser/aeon`) to read remote `aeon.yml` + `skills.json` from
high line 29

Template literal with variable interpolation in command context

SourceSKILL.md
29No new secrets. No new env vars. No new state files. Pure local file I/O over the fork's own working tree, plus optional `gh api` for the `${var}=owner/repo` remote-survey mode.
high line 38

Template literal with variable interpolation in command context

SourceSKILL.md
38- `apps/mcp-server/src/index.ts` — MCP server tool-naming Review row scans for the `aeon-${skill_slug}` convention. Optional input (forks without MCP omit this directory).
high line 45

Template literal with variable interpolation in command context

SourceSKILL.md
45- `articles/v4-readiness-${today}.md` — the full per-fork readiness report.
high line 46

Template literal with variable interpolation in command context

SourceSKILL.md
46- `memory/logs/${today}.md` — log block.
high line 48

Template literal with variable interpolation in command context

SourceSKILL.md
48If `${var}` is a fork slug instead of `dry-run` or empty, replace every local file read with `gh api repos/${var}/contents/<path>` and decode the base64 content. Custom-skill scan via `gh api repos/${
high line 61

Template literal with variable interpolation in command context

SourceSKILL.md
61| `articles/${skill}-${today}.md` output convention | per-skill | Consumed by chains, dashboard, syndicate-article — too many readers to break |
high line 64

Template literal with variable interpolation in command context

SourceSKILL.md
64| `${today}` template variable | SKILL.md prose | Substituted by the runner; no plan to change |
high line 79

Template literal with variable interpolation in command context

SourceSKILL.md
79| MCP server tool naming (`aeon-${skill_slug}`) | `apps/mcp-server/src/index.ts` | Naming convention for forks consuming the MCP |
high line 116

Template literal with variable interpolation in command context

SourceSKILL.md
116- If `${var}` matches `^dry-run$` → `MODE=dry-run`. No notification, article still writes.
high line 117

Template literal with variable interpolation in command context

SourceSKILL.md
117- Else if `${var}` matches `^[a-zA-Z0-9._-]+/[a-zA-Z0-9._-]+$` → `MODE=remote`, `TARGET=${var}`. All file reads go through `gh api repos/${TARGET}/contents/...`.
high line 118

Template literal with variable interpolation in command context

SourceSKILL.md
118- Else if `${var}` is empty → `MODE=local`, `TARGET=$(gh repo view --json nameWithOwner --jq .nameWithOwner)`.
high line 119

Template literal with variable interpolation in command context

SourceSKILL.md
119- Anything else → log `V4_READINESS_BAD_VAR: ${var}` and exit (no notify, no article).
high line 131

Template literal with variable interpolation in command context

SourceSKILL.md
131| `aeon.yml` | direct read | `gh api repos/${TARGET}/contents/aeon.yml --jq .content \| base64 -d` | required |
high line 134

Template literal with variable interpolation in command context

SourceSKILL.md
134| Custom skills | `ls skills/` minus skills present in `skills.json` install rows | `gh api repos/${TARGET}/contents/skills` JSON | required |
high line 135

Template literal with variable interpolation in command context

SourceSKILL.md
135| `.github/workflows/chain-runner.yml` | direct read | `gh api repos/${TARGET}/contents/.github/workflows/chain-runner.yml ...` | optional |
high line 136

Template literal with variable interpolation in command context

SourceSKILL.md
136| `.outputs/` (listing only — file names suffice) | `ls .outputs/ 2>/dev/null` | `gh api repos/${TARGET}/contents/.outputs` | optional |
high line 137

Template literal with variable interpolation in command context

SourceSKILL.md
137| `apps/mcp-server/src/index.ts` | direct read | `gh api repos/${TARGET}/contents/apps/mcp-server/src/index.ts ...` | optional |
high line 138

Template literal with variable interpolation in command context

SourceSKILL.md
138| `apps/dashboard/lib/catalog.ts` | direct read | `gh api repos/${TARGET}/contents/apps/dashboard/lib/catalog.ts ...` | optional |
high line 144

Template literal with variable interpolation in command context

SourceSKILL.md
144<!-- Issue #184 H1 audit, 2026-05-24: every file named in a Review row's `Where it lives` cell must also appear in this Inputs table. If you add a new Review row, add its file here too (or mark the Re
high line 163

Template literal with variable interpolation in command context

SourceSKILL.md
163For each custom-skill candidate: confirm it exists on disk (`skills/${name}/SKILL.md`) and is **not** present in the upstream-fingerprint heuristic (skills with `install: ./add-skill aaronjmars/aeon $
high line 182

Template literal with variable interpolation in command context

SourceSKILL.md
182Path: `articles/v4-readiness-${today}.md`. Overwrite if exists.
medium line 184

Template literal with variable interpolation in command context

SourceSKILL.md
184```markdown
medium line 255

Template literal with variable interpolation in command context

SourceSKILL.md
255```
high line 277

Template literal with variable interpolation in command context

SourceSKILL.md
277### 8. Log to `memory/logs/${today}.md`
medium line 279

Template literal with variable interpolation in command context

SourceSKILL.md
279```
high line 301

Template literal with variable interpolation in command context

SourceSKILL.md
301| `V4_READINESS_BAD_VAR` | `${var}` was non-empty, non-`dry-run`, not a `owner/repo` slug | No |
high line 307

Template literal with variable interpolation in command context

SourceSKILL.md
307**Remote mode (`var=owner/repo`).** Each input read is a single `gh api repos/${TARGET}/contents/${path}` call. `gh` handles auth via the workflow's `GITHUB_TOKEN`, so there is no env-var-in-curl patt
critical line 59

Piping content to bash shell

SourceSKILL.md
59| `./notify "message"` interface | bash | Operator-facing CLI; documented in CLAUDE.md |
critical line 63

Piping content to bash shell

SourceSKILL.md
63| `gh api` and `gh pr create` usage in skills | bash | GitHub CLI is stable; sandbox workaround for env-var-in-headers |
Scanned on Jun 14, 2026
View Security Dashboard
Installation guide →