garrytan/gstack · error · Error

tombstoneBrowserSkill: skill "${name}" not found in tier "${

Error message

tombstoneBrowserSkill: skill "${name}" not found in tier "${tier}" at ${src}

What it means

Error "tombstoneBrowserSkill: skill "${name}" not found in tier "${tier}" at ${src}" thrown in garrytan/gstack.

Source

Thrown at browse/src/browser-skills.ts:412

// ─── Tombstone (rm) ─────────────────────────────────────────────

/**
 * Move a user-tier skill (project or global) into the tier's .tombstones/
 * directory. Returns the new path.
 *
 * Cannot tombstone bundled skills — they ship with gstack and are read-only.
 * To remove a bundled skill, override it with a global/project entry, or
 * remove the file from the gstack source tree.
 */
export function tombstoneBrowserSkill(name: string, tier: 'project' | 'global', tiers?: TierPaths): string {
  const t = tiers ?? defaultTierPaths();
  const root = tier === 'project' ? t.project : t.global;
  if (!root) {
    throw new Error(`tombstoneBrowserSkill: tier "${tier}" has no resolved path`);
  }
  const src = path.join(root, name);
  if (!fs.existsSync(src)) {
    throw new Error(`tombstoneBrowserSkill: skill "${name}" not found in tier "${tier}" at ${src}`);
  }
  const tombstoneDir = path.join(root, '.tombstones');
  fs.mkdirSync(tombstoneDir, { recursive: true });
  const ts = new Date().toISOString().replace(/[:.]/g, '-');
  const dst = path.join(tombstoneDir, `${name}-${ts}`);
  fs.renameSync(src, dst);
  return dst;
}

View on GitHub (pinned to 94993f7401)

When it happens

Trigger: Thrown at browse/src/browser-skills.ts:412 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of garrytan/gstack@94993f7401 (2026-08-12). Data as JSON: /api/errors/7926c95b99d53d94. Report an issue: GitHub.