Pack Install Issue Analysis

analyze-sessions report for 2026-05-29. Scope: Claude and Codex conversation history, repository pack scripts, current local install state, and documented lessons.

Executive Finding

Conclusion: recurring pack install issues come from four interacting surfaces, not one defect: running sessions do not hot-reload newly installed skills; natural-language install phrases are parsed as token lists instead of exact pack or skill identifiers; prior Codex skill discovery was broken by stale symlink-style installs; and Codex executions repeatedly hit launcher, working-directory, sandbox, or local filesystem blockers.

The current repository state is mostly healthy. Project-local Claude and Codex roots now expose the expected active skills, including analyze-sessions, investigate, targeted-skill-builder, ship, and sync. The remaining risk is workflow friction: users naturally say $pack install targeted skill builder or $pack install content creator pack, while the script is safest with exact identifiers such as targeted-skill-builder, skill-dev, creator-media, or a real skill name discovered through scripts/pack.sh which.

66compact user records with direct pack install prompts
24 / 42direct prompts split Claude / Codex in compact histories
36,667rich transcript records scanned across Claude projects and Codex sessions
16current project-local Codex and Claude active skill roots observed

The strongest evidence is from repeated session logs on May 22-29, repository lessons written immediately after failures, and current pack script behavior. The weakest evidence is any claim about Claude internals beyond what conversations and docs show, because Claude's runtime loader behavior is inferred from observed prompts and project docs rather than instrumented directly.

Source Coverage

CategorySources CheckedWhat It SupportsConfidence
Compact histories~/.claude/history.jsonl, ~/.codex/history.jsonlDirect user prompts, dates, command surface, repeated install requestsHigh
Rich transcripts~/.claude/projects/**/*.jsonl, ~/.codex/sessions/**/*.jsonlAssistant actions, command failures, successful retries, final caveatsHigh
Current codescripts/pack.sh, scripts/skill-links.shParser behavior, alias mapping, install semantics, session reload notice, real-file install behaviorHigh
Project docs and lessonsREADME.md, AGENTS.md, tasks/lessons.md, tasks/todo.mdKnown postmortems, intended fallback behavior, current operating rulesHigh
Current install statescripts/pack.sh status, find .codex/.claude/skills -maxdepth 2 -name SKILL.md, scripts/pack.sh which ...Whether current local project install is still brokenHigh

Counts from the compact pass: 12,927 user records, 9,744 Claude and 3,183 Codex. Counts from the rich pass: 36,667 records, 22,697 Claude and 13,970 Codex. The rich pass can over-count pasted file contents, so quantitative command counts use compact histories while qualitative failure analysis uses rich session records.

Evidence Coverage Gate

Is this source coverage sufficient to treat the root-cause classification as evidence-backed?

Incident Timeline

DateRunnerUser Command or ThemeObserved ProblemResolution / Status
2026-05-22Codex$pack install content creator packThe phrase did not map to a literal pack. The agent first ran a bundled launcher from the skill directory, then reran from the target project root. Current alias logic maps creator/media phrases to creator-foundation plus youtube-ops, not to a pack named content.Succeeded after interpretation as a creator-media style install; fresh session caveat remained.
2026-05-26Codex$pack install exec-loopLauncher initially treated the skill directory as project root and hit read-only sandbox behavior. The agent switched to the repository project root and absolute script path.Succeeded; user still needed a fresh session to see changed skills.
2026-05-26SharedMissing skill and cross-pack routing discussionUser asked how recommended skills could point to the pack that contains them, and how invocation of an uninstalled skill could trigger install guidance.Rules were added to AGENTS.md and pack skill instructions: run scripts/pack.sh which <skill>, recommend installing the containing pack, and note fresh-session requirements.
2026-05-26Codexpack install investigateinvestigate is a skill, not a pack. Then a zero-byte .codex file blocked creation of .codex/skills.Mapped to code-debug, removed the local filesystem blocker, installed successfully, and verified local roots.
2026-05-27Codex$pack install targeted skill builderNatural phrase was not an exact pack identifier. The intended skill is targeted-skill-builder, provided by skill-dev. Lock/sandbox permission issues appeared during retry.Succeeded after resolving to skill-dev and running with sufficient write permissions.
2026-05-27Codex$pack install skill fixerCurrent parser splits on spaces. skill can resolve to skill-dev, but fixer is unknown. This can cause partial refresh before failure.No real skill-fixer exists. skill-dev was already enabled or refreshed; the phrase remains unsupported.
2026-05-28CodexCodex $ skill discovery repairscripts/pack.sh status listed full enabled packs, but direct Codex discovery saw only two project-local SKILL.md files because stale symlink-style installs did not expose real files the way current Codex discovery expected.scripts/skill-links.sh now copies active skill files into managed directories and excludes archives. scripts/pack.sh refresh repaired local roots.
2026-05-29Codex$pack install analyze-sessionsLauncher path confusion and sandbox write restrictions recurred. The agent switched to repo-local scripts/pack.sh, then escalated for writes to local install roots.Succeeded. analyze-sessions is individually installed from session-analytics; fresh session still needed for active skill list visibility.

Root Causes

1. Running sessions do not hot-reload newly installed skills

Shared High confidence

pack install updates local files and .agents/project.json, but Claude and Codex may load available skill instructions at session start. The project docs and pack skill explicitly say a fresh CLI session may be needed. Many successful installs ended with that caveat, which explains why an install can succeed yet the user still cannot invoke the skill immediately.

2. Natural-language install phrases are ambiguous

Shared High confidence

The install parser splits raw arguments on spaces and commas. That makes exact names reliable, but phrases such as targeted skill builder, skill fixer, or content creator pack can become separate tokens. Some tokens resolve to aliases or packs, while later tokens can fail. This also explains why agents repeatedly had to use scripts/pack.sh which or inspect pack manifests.

3. Codex discovery previously missed symlink-style installs

Codex-heavy High confidence

A May 28 lesson recorded that scripts/pack.sh status listed the expected packs while real-file discovery under .codex/skills saw only two SKILL.md files. The repair changed active managed installs to copied real files rather than symlinked SKILL.md files. Current local roots are healthy, so this appears fixed locally rather than an active blocker.

4. Codex executions hit launcher, working-directory, sandbox, and filesystem blockers

Codex-heavy High confidence

Several Codex incidents first ran the bundled launcher from the skill directory or a wrong path, then had to rerun from the target repository with the repo-local script. Codex also hit sandbox write restrictions around .agents and .codex. One incident had a zero-byte .codex file where the installer needed a directory.

5. Cross-pack routing guidance was incomplete until late May

Shared Medium-high confidence

Before the current fallback rules, skills and agents could recommend a skill by name without telling the user which pack contains it. The user explicitly called out this gap, and the project now instructs agents to run scripts/pack.sh which <skill-name> and recommend installing the containing pack when the command is missing.

Evidence Matrix

ClaimEvidenceInferenceAssumption StatusDecision Impact
Fresh sessions are required after many installsREADME.md, pack skill instructions, and scripts/pack.sh all state that Claude/Codex may keep skill lists loaded from session start. Multiple assistant final reports repeated this caveat.Install success is not the same as in-session invocation success.Evidence-backedAny fix or user instruction should separate filesystem install verification from active-session visibility.
Natural phrases are a recurring failure modeDirect prompts include $pack install targeted skill builder, $pack install skill fixer, and $pack install content creator pack. scripts/pack.sh splits install args by whitespace and comma before validating tokens.The script can mutate on earlier valid tokens, then fail on later unknown tokens.Evidence-backedAdd preflight validation or phrase normalization if the goal is to make natural commands robust.
Codex stale symlink installs were a real prior blockertasks/lessons.md documents a status/discovery mismatch. Current scripts/skill-links.sh copies active skill contents and excludes archives.Pack status could be accurate while Codex command discovery was incomplete.Evidence-backedKeep regression tests and avoid returning to symlinked active SKILL.md files.
Codex environment issues amplified pack install failuresCodex transcripts for exec-loop, targeted skill builder, investigate, and analyze-sessions mention wrong launcher context, read-only bind behavior, lock timeouts, escalation, or a blocking .codex file.Some failures were not pack logic bugs; they were execution-context problems around where and how the installer ran.Evidence-backedCodex instructions should prefer repo-local scripts/pack.sh from project root and escalate when sandbox writes are required.
Cross-pack recommendation gaps caused user frictionClaude history shows the user asking for plans so skills recommend the containing pack and automatically guide install attempts for missing commands. AGENTS.md now encodes this fallback.The current rule is a remediation for a real workflow gap, not just speculative improvement.Evidence-backed with implementation inferenceMissing-skill fallback should remain central in skill instructions and benchmark fixtures.

Research Completeness Gate

Which conclusion needs the most additional support before this analysis is used for a code change?

Confidence And Assumption Register

ConclusionStatusWhat Could Change ItConfidence
Current project-local install state is healthy.Observed locally through status and direct file discovery.A different machine or branch could still have stale local install roots.High
Fresh sessions remain required after install for reliable invocation.Documented in script output, README, pack skill, and repeated final reports.Future Claude/Codex runtime support for dynamic skill reload would change this.High
Phrase parsing is still a residual product risk.Current parser behavior still splits on whitespace before validating.If users always invoke exact names, the risk becomes documentation-only.High
Symlink discovery is fixed locally.Current helper copies active files and local roots show all expected SKILL.md files.Regression in scripts/skill-links.sh or stale installs on another checkout.Medium-high
Claude and Codex share the hot-reload problem.Docs and observed caveats reference both; direct Codex failures are richer.Instrumented Claude runtime discovery could reveal different behavior.Medium-high

Assumptions And Confidence Gate

Do you accept the confidence split between evidence-backed findings and runtime-loader inference?

Alternatives Considered

Alternative ExplanationAssessmentWhy It Is Not The Primary Finding
The pack system is generally broken.Rejected.Current installs succeed, scripts/pack.sh status is coherent, and direct skill roots exist. The failures cluster around invocation context, discovery freshness, and naming.
Only Codex has the problem.Rejected.Codex has the richest failure logs, but Claude history also shows direct install prompts, missing-skill friction, and the same no-hot-reload caveat in shared docs.
Only user command syntax is wrong.Rejected.Natural phrases are a real factor, but even exact installs can require a fresh session or hit sandbox/write issues.
The stale symlink discovery bug explains everything.Rejected.It explains a major Codex visibility failure on May 28, but it does not explain natural phrase parsing, launcher path confusion, or sandbox blockers.

Rejected Or Lower-Confidence Findings And Source Gaps

Lower-confidence findings

Source gaps

Scope And Non-Goals Gate

Should this report stay focused on diagnosis, or should it also propose implementation details for parser and launcher changes?

Downstream Implications

If this analysis is accepted, the highest-leverage fixes are small and targeted:

The lower-risk path is documentation and benchmark reinforcement only. The higher-leverage path is a parser preflight change, because it prevents partial mutation when a multi-token phrase contains both valid and invalid tokens.

Recommended Path Gate

Which remediation direction should this analysis support?

Script Surface Follow-up (2026-06-07)

Follow-up finding: scripts/pack.sh is the strongest existing script-first pattern in this repository. It already owns the deterministic pack lifecycle, including install, remove, refresh, doctor, prune, pin/unpin, project-mode writes, managed install markers, and reload notices.

This does not change the original conclusion about pack-install friction. The remaining gap is not the absence of a script; it is install and visibility guidance around no-hot-reload behavior, exact pack or skill identifiers, downstream/manual runnable script readiness, and how agents should report successful filesystem installs that are not visible in the current session yet.

The scriptability investigation also found a documentation/path mismatch that can confuse manual operators: repo docs reference scripts/init-agentic-skills.sh, but the actual launcher files live under global/{claude,codex}/init-agentic-skills/scripts/. Any user-facing install guidance should either point at the real launcher locations or add the documented root-level launcher before recommending scripts/init-agentic-skills.sh.

Downstream/manual readiness needs its own portability gate. Related runnable inventory scripts have already shown Bash 3.2 failures on macOS stock Bash, while compile-central-alignment shows the opposite extraction gap: a deterministic alignment-index algorithm still lives primarily in a skill contract, with only the browser opener scripted today.

Amended Decision Impact

Proposed File Changes

This report run proposes the following durable files only:

No pack script changes are included in this report run. Any parser, alias, launcher, or benchmark change should be handled as a separate implementation task after review.

Proposed File Changes Gate

Are the proposed file outputs for this analysis acceptable?

Post-Approval Route Gate

After this diagnosis is approved, should implementation work be held until you explicitly request it?

Compile Answers

Answer every required gate question above, then compile the review payload. The YAML includes required gate answers and any optional section feedback you selected.