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.
pack install promptsThe 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
| Category | Sources Checked | What It Supports | Confidence |
|---|---|---|---|
| Compact histories | ~/.claude/history.jsonl, ~/.codex/history.jsonl | Direct user prompts, dates, command surface, repeated install requests | High |
| Rich transcripts | ~/.claude/projects/**/*.jsonl, ~/.codex/sessions/**/*.jsonl | Assistant actions, command failures, successful retries, final caveats | High |
| Current code | scripts/pack.sh, scripts/skill-links.sh | Parser behavior, alias mapping, install semantics, session reload notice, real-file install behavior | High |
| Project docs and lessons | README.md, AGENTS.md, tasks/lessons.md, tasks/todo.md | Known postmortems, intended fallback behavior, current operating rules | High |
| Current install state | scripts/pack.sh status, find .codex/.claude/skills -maxdepth 2 -name SKILL.md, scripts/pack.sh which ... | Whether current local project install is still broken | High |
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
| Date | Runner | User Command or Theme | Observed Problem | Resolution / Status |
|---|---|---|---|---|
| 2026-05-22 | Codex | $pack install content creator pack | The 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-26 | Codex | $pack install exec-loop | Launcher 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-26 | Shared | Missing skill and cross-pack routing discussion | User 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-26 | Codex | pack install investigate | investigate 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-27 | Codex | $pack install targeted skill builder | Natural 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-27 | Codex | $pack install skill fixer | Current 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-28 | Codex | Codex $ skill discovery repair | scripts/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-29 | Codex | $pack install analyze-sessions | Launcher 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
| Claim | Evidence | Inference | Assumption Status | Decision Impact |
|---|---|---|---|---|
| Fresh sessions are required after many installs | README.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-backed | Any fix or user instruction should separate filesystem install verification from active-session visibility. |
| Natural phrases are a recurring failure mode | Direct 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-backed | Add preflight validation or phrase normalization if the goal is to make natural commands robust. |
| Codex stale symlink installs were a real prior blocker | tasks/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-backed | Keep regression tests and avoid returning to symlinked active SKILL.md files. |
| Codex environment issues amplified pack install failures | Codex 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-backed | Codex instructions should prefer repo-local scripts/pack.sh from project root and escalate when sandbox writes are required. |
| Cross-pack recommendation gaps caused user friction | Claude 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 inference | Missing-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
| Conclusion | Status | What Could Change It | Confidence |
|---|---|---|---|
| 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 Explanation | Assessment | Why 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
- Exact Claude runtime mechanics are inferred from docs and conversations. I did not instrument Claude's skill loader.
- Some rich transcript matches can include pasted file contents, so the rich pass is not used for exact command frequency.
- Pack lock issues appear in sessions, but this pass did not audit lock implementation in depth because the stronger recurring blockers are naming, reload, and sandbox context.
Source gaps
- No direct telemetry from Claude or Codex skill-list reload internals.
- No fresh reproduction of every historical failing command, because running install commands could mutate the local project again.
- No cross-machine validation that all developers have refreshed away from stale symlink installs.
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:
- Add a preflight phase to
scripts/pack.sh installso all tokens or phrases are validated before any project mutation occurs. - Normalize common natural phrases before token splitting, especially
targeted skill buildertotargeted-skill-builderand content/creator phrases to the intended creator media bundle. - Keep
scripts/pack.sh which <skill>in missing-skill fallback rules and benchmark those rules so agents recommend the containing pack. - Keep the no-hot-reload warning visible in install output and final responses after installs.
- For Codex, prefer running the repo-local
scripts/pack.shfrom the target project root, and treat sandbox write errors as permission issues rather than pack logic failures.
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?
Proposed File Changes
This report run proposes the following durable files only:
alignment/analyze-sessions-pack-install-issues.html: this review artifact.tasks/roadmap.md: current targeted update status.tasks/todo.md: current task checklist and review notes.
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.