Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UyNYwD4UccVw9ZCFZyJX55
14 KiB
| type | entry_prefix | schema | rules | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| blockers_registry | BLK |
|
|
Blockers registry (BLK)
Index
| ID | Date | Friction | Status |
|---|---|---|---|
| BLK-001 | 2026-04-22 | rtk curl breaks JSON pipelines |
upstream |
| BLK-002 | 2026-04-23 | rmdir denied in sandbox on empty directory |
resolved |
| BLK-003 | 2026-05-12 | scripts/screenshot.mjs hardcoded macOS path blocks PNG cards on Linux |
upstream |
| BLK-004 | 2026-05-20 | /ship-feature wrapper at ~/.claude/commands/ points to deleted agent files post-refactor |
resolved |
| BLK-005 | 2026-05-21 | gstack submodule rename (checkpoint→context-save) breaks profile entries | resolved |
| BLK-006 | 2026-05-21 | profile.sh current false-negative via ~/.claude symlink (cd not cd -P) |
resolved |
| BLK-007 | 2026-06-02 | 6 gstack source skills (ios-*, spec) unlinked post-bump — invisible to profiles + gstack on |
resolved |
BLK-001 — rtk curl returns compressed schema in pipes
- Date: 2026-04-22
- Friction: pipelines like
rtk curl ... | python -c "json.load(sys.stdin)"(orjq,awk) fail without clear error. - Real cause:
rtk curlauto-compresses stdout regardless of TTY — documented in.claude/tasks/rtk-upstream-issue.md. - Solution:
- Short-term workaround:
exclude_commands=["curl"]in~/.config/rtk/config.toml. - Alternative workaround: use
rtk proxy. - Upstream fix: issue reported, see
.claude/tasks/rtk-upstream-issue.md.
- Short-term workaround:
- Status: upstream (
rtkbug, workaround applied).
BLK-002 — rmdir denied in sandbox on empty directory
- Date: 2026-04-23
- Friction: couldn't delete
./tasks/after emptying (post-migration to.claude/tasks/).rmdir tasksandrm -r tasksreturned "Permission denied" even with empty dir and non-destructive intent. - Real cause: Claude Code sandbox blocks destructive commands (
rm,rmdir,rm -rf) by default via harness permission gate, regardless of actual semantics.git rmthroughgitpassed (commitc721a36) — git treated as non-destructive tool. - Solution:
- This session:
git rm tasks/*.mdhandled files individually (viagit rm, cleared gate). Git auto-detected renames to.claude/tasks/, sotasks/directory removed implicitly at commit time. - If dir persists empty after
git rm: ask user to runrmdir tasksmanually.
- This session:
- Status: resolved (fixed via
git rm+ rename auto-detection; normdirneeded in practice).
BLK-003 — scripts/screenshot.mjs hardcoded macOS path blocks PNG cards on Linux
- Date: 2026-05-12
- Friction:
/darwin-skillPhase 3 generates result cards vianode ~/.agents/skills/darwin-skill/scripts/screenshot.mjs <html> <png>. On Linux: script fails immediately —require('/Users/alchain/.npm-global/lib/node_modules/playwright/node_modules/playwright-core')resolves to a non-existent macOS user path. No PNG cards produced; Phase 3 falls back to markdown report only. - Real cause: upstream
alchaincyf/darwin-skillauthor dev'd on macOS, shipped absolute path to their own homedir's global npm install of playwright. Zero portability layer (no PATH lookup, noplaywrightbare require, no fallback tonpx). - Solution:
- Workaround (used 2026-05-12): skip PNG generation, deliver markdown + HTML cards (HTML viewable in browser without playwright).
- Local patch:
npm i -g playwrightthen replacerequire('/Users/alchain/...')withrequire('playwright'). Two lines edit. - Spec-documented fallback:
npx playwright screenshot "file:///path/to/card.html#<theme>" out.png --viewport-size=960,1280 --wait-for-timeout=2000— works without modifying the file, costs ~150MB chromium download. - PR upstream to
github.com/alchaincyf/darwin-skillonce tested.
- Status: upstream (third-party skill at
~/.agents/skills/darwin-skill/scripts/screenshot.mjs, not in any of our repos).
BLK-004 — /ship-feature wrapper references 6 deleted agent files
- Date: 2026-05-20
- Friction:
/ship-featureinvocation loads wrapper at~/.claude/commands/ship-feature.md. Wrapper saysLoad and follow strictly: .claude/agents/{ship-feature,analyzer,designer,implementer,reviewer,tester}.md. 5 of 6 paths missing on disk (onlyanalyzer.mdsurvives). User hits blocker — wrapper without orchestrator. - Real cause: refactor commits
0241e1d("extract skill logic into standalone agent files") +21960e0("changed orchestrators into skills") migrated orchestrator from.claude/agents/ship-feature.mdinto~/.claude/skills/ship-feature/SKILL.mdand replaced custom sub-agents (designer/implementer/reviewer/tester) with superpowers skills (brainstorming, writing-plans, subagent-driven-development, requesting-code-review, finishing-a-development-branch). Wrapper at~/.claude/commands/ship-feature.mdnever updated, never deleted. Untracked file — survived all refactor commits silently. - Solution:
rm ~/.claude/commands/ship-feature.md. Skill~/.claude/skills/ship-feature/SKILL.md(name: ship-feature,disable-model-invocation: true) becomes sole/ship-featureresolver. SKILL.md references only existing agents:plugin-advisor.md,analyzer.md,doc-syncer.md. - Status: resolved.
BLK-005 — /profile set full warns missing: checkpoint after gstack upstream rename
- Date: 2026-05-21
- Friction:
/profile set full(and dev, backend, web, web-full) emits⚠ missing: checkpoint — try: bash link.sh. Runningbash link.shreports✅ All symlinks already up to date. Next: bash install-plugins.sh— dead-end loop. User cannot resolve the warning by following the suggested next step. - Real cause: gstack upstream renamed the
checkpointskill tocontext-save(Claude Code now treats/checkpointas a native rewind alias, shadowing the gstack skill). New skill inskills-external/gstack/context-save/SKILL.mdcarries the description"Formerly /checkpoint — renamed because Claude Code treats /checkpoint as a native rewind alias". Fivelib/profiles/*.profilefiles still listed the dead name.link.shonly symlinks repo dirs into~/.claude/— it cannot materialize a skill that no longer exists upstream, so its suggested action was misleading. - Solution:
s/checkpoint/context-save/inlib/profiles/{dev,backend,full,web,web-full}.profile(commit69c5ded).CLAUDE.md:193routing lineSave progress, checkpoint, resume → invoke context-saveupdated locally, left uncommitted because the file holds unrelated in-progress graphify section work. Verify:bash lib/profile.sh set fullnow outputs✓ enabled: context-savewith no warning. - Status: resolved.
BLK-006 — bash lib/profile.sh current false-negative when invoked via ~/.claude/lib/ symlink
- Date: 2026-05-21
- Friction:
bash "$HOME/.claude/lib/profile.sh" currentreturnsnone (all gstack skills enabled — no profile set)even when a profile IS applied + 14gstack__*entries sit in the repo'sskills-disabled/. User cannot detect active profile via the official command. Same script invoked from inside the repo directory (bash lib/profile.sh current) returns the correct answer — invocation-path-dependent behavior is the worst kind of bug to diagnose. - Real cause:
lib/profile.sh:43setREPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)". Default bashcdpreserves symlinks (logical pathname mode,set -Poff). When the script is invoked via the~/.claude/lib/profile.shsymlink (link.sh wires~/.claude/lib -> <repo>/lib),$BASH_SOURCE[0]is the symlinked path,dirnamereturns~/.claude/lib,cd ..lands at~/.claude, andpwdreturns the logical path/home/bchanot-ubuntu/.claude.$SKILLS_DIR="$REPO/skills"still works because~/.claude/skillshappens to be a symlink to the repo'sskills/. But$DISABLED_DIR="$REPO/skills-disabled"resolves to~/.claude/skills-disabled— a real sibling directory created at some earlier point containing only 2 stale npx-skill symlinks (darwin-skill,find-skills).cmd_currentscans this near-empty dir, finds 0gstack__*entries, returns the "none" sentinel. - Solution:
REPO="$(cd -P "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"(commita4558ee).-Pforces physical-path resolution so$REPOis always the real repo path regardless of how the script is invoked. Verify:bash "$HOME/.claude/lib/profile.sh" currentnow returnsfull (100% match, 14 gstack skills disabled). - Status: resolved. Follow-up:
~/.claude/skills-disabled/(real dir with onlydarwin-skill/find-skillssymlinks) is orphaned — these npx skills are already symlinked into<repo>/skills/by link.sh, so the disabled-side copies serve no purpose. Could be deleted to remove confusion, but harmless as-is.
BLK-007 — 6 gstack source skills (ios-*, spec) unlinked — invisible to profile system + gstack on
- Date: 2026-06-02
- Friction:
skills-external/gstack/has 53 source skills; 6 (ios-clean,ios-design-review,ios-fix,ios-qa,ios-sync,spec) exist ONLY as source — NOT symlinked intoskills/(enabled) norskills-disabled/gstack__*(parked). So invisible to Claude AND untouched byreset/gstack on(both operate on parkedgstack__*only). Surfaced while addinggstack on|off:commof gstack source vsfull.profile. - Real cause: gstack submodule bump added new skills; gstack's own
./setup(source of truth for per-skill symlinks per link.sh) not re-run → symlinks never created. Same lifecycle gap class as toggle-external-source-only-state (LRN-007). NOT afull.profilebug — full curated by design (BDR-017 caveat: "full excludes rarely-used gstack skills"). Initial "full omits ios = bug" flag was WRONG, self-corrected (see EVAL-002). - Solution applied (NOT full
./setup— surgical, no side effects): (1) Linkedspeconly —mkdir skills/spec+ln -snf <abs>/skills-external/gstack/spec/SKILL.md skills/spec/SKILL.md, matching gstack setup:440-476 (per-skill real dir + SKILL.md symlink, name from frontmatter). (2) Addedspectofull.profile+web-full.profileplanning sections (must be in active profilefullelseset fullre-disables it). (3) iOS 5 skills deliberately NOT linked — Linux host, device-farm needs Mac daemon + Tailscale + iOS devices = dead skills + token cost. (4) Completed.gitignoregstack allowlist: added all 12 missing (spec, 5ios-*, 6 parkeddocument-generate/landing-report/scrape/setup-gbrain/skillify/sync-gbrain), removed stalecheckpoint(BLK-005 rename). Reason:gstack on(BDR-018) moves parked skills intoskills/— any gstack skill missing from allowlist = untracked git noise on enable. - Verified:
profile show full+web-full→ spec enabled; allowlist drift recheck EMPTY; spec skill now visible to Claude. - Status: resolved. iOS = intentional exclusion (re-linkable via gstack
./setupon a Mac). See gstack-gitignore-allowlist-completeness (LRN-025).
BLK-008 — gstack ./setup fails on Ubuntu 26.04 — Playwright chromium unsupported
-
Date: 2026-06-23
-
Friction: fresh Ubuntu 26.04,
make install/make plugin→ "Failed to install browsers / ERROR: Playwright does not support chromium on ubuntu26.04-x64" → "GStack ./setup failed". Non-fatal in our wrapper (warn only) but gstack's browser (/browse,/qa, design screenshots) is silently dead once gstack is enabled. -
Real cause: Playwright 1.58.2 (pinned in the gstack submodule) registry lists
ubuntu20.04/22.04/24.04only; 26.04 released later → not in list →getHostPlatformerrors. Pure OS-newness, not an install bug. -
Solution: gated
export PLAYWRIGHT_HOST_PLATFORM_OVERRIDE=ubuntu24.04-x64(ubuntu >24.04 only) before gstack setup + persisted to.bashrcfor runtime. Playwright then pulls a Chrome-for-Testing fallback build for ubuntu24.04. Verified on 26.04:lddresolves all libs + real headless render OK. -
Status: resolved (commit
211c7d4). Residual: exact rev 1208 launch not in-session-tested (sandbox download hung at extraction); proved via sibling rev 1228 same-platform CfT build. Confirm on next realmake plugin. Proper upstream fix = gstack bumps Playwright to a version that lists ubuntu26.04. See LRN-038. -
2026-06-23 UPDATE — Solution REVERTED, status downgraded to UPSTREAM/open (commit
b9c3937): thePLAYWRIGHT_HOST_PLATFORM_OVERRIDEsolution above does NOT work on 26.04. The fallback build downloads to 100% then HANGS at extraction (chrome binary never appears, no headless-shell download starts; reproduced on real machine + sandbox) → turned a 0.5s fast-fail into an install-blocking hang (user Ctrl+C). Reverted to the fast-fail (non-fatal; gstack OFF by default, browser only for /browse,/qa,screenshots). The earlier "verified ldd + headless render" was an isolated test on a sibling already-extracted build (rev 1228) — it masked the rev-1208 install-path hang. Real fix = upstream: gstack bumps Playwright to a version that lists ubuntu26.04. Until then gstack's browser is unavailable on 26.04, install completes cleanly. See LRN-038 correction. -
2026-06-23 FINAL — RESOLVED (commit
3b8ffb1): gstack browser now works on Ubuntu 26.04. Two layers fixed: (1) bumped gstack's pinned Playwright 1.58.2 → 1.61 (bun add playwright@latestin the submodule; 1.61 ships a native ubuntu26.04 build — chromium rev 1228), automated in the installer (gstack_bump_playwright_if_unsupported, idempotent, OS-gated); (2)GSTACK_CHROMIUM_NO_SANDBOX=1to work around the AppArmor userns restriction (sysctl kernel.apparmor_restrict_unprivileged_userns=1), persisted to.bashrc+ installer Step 9 (sysctl-gated). Verified end-to-end:browse goto https://example.com→ "Navigated (200)". Caveat: the Playwright bump is a local submodule edit, reset bygit submodule update, re-applied by the next install. See BDR-029, LRN-040.