Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-hub / packages/cli/src/commands/remove.ts |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-hub |
| Revision | e0f4bf978d4df168369c7601d9c5f5ea89e84377 |
| Branch | main |
| Path or archive member | packages/cli/src/commands/remove.ts |
| Original SHA-256 | 0636c8116835d2f24d8ebe48a3508dc8b71f48dc082d51c094abda6230ad93e2 |
| Git blob SHA | bf57f2c03e828d516fd98b6455e43534148cec4a |
| Reading-copy SHA-256 | 0636c8116835d2f24d8ebe48a3508dc8b71f48dc082d51c094abda6230ad93e2 |
Recovered source transcript
Download complete source text ↓61 lines · 1.7 KB
import * as p from '@clack/prompts'
import pc from 'picocolors'
import { syncClaudeMd } from '../lib/context.js'
import { readLockfile, removeEntry } from '../lib/lockfile.js'
import * as logger from '../lib/logger.js'
import { removeFromAgents } from '../lib/storage.js'
import { track } from '../lib/telemetry.js'
/**
* Remove an installed llms.txt skill from all agent directories.
*/
export async function remove(name: string): Promise<void> {
if (!name) {
logger.error('Please specify a name to remove')
p.log.message('Usage: llmstxt remove <name>')
process.exitCode = 1
return
}
const projectDir = process.cwd()
const lockfile = readLockfile(projectDir)
// Find by slug or name
const entry = Object.values(lockfile.entries).find(
e => e.slug === name || e.name.toLowerCase() === name.toLowerCase()
)
if (!entry) {
logger.error(`"${name}" is not installed`)
p.log.message('Run `llmstxt list` to see installed files')
process.exitCode = 1
return
}
// Confirmation prompt (skip in non-TTY)
if (process.stdin.isTTY) {
const shouldRemove = await p.confirm({
message: `Remove ${entry.name} from all agent directories?`
})
if (p.isCancel(shouldRemove) || !shouldRemove) {
p.cancel('Removal cancelled.')
return
}
}
try {
removeFromAgents({ projectDir, slug: entry.slug })
} catch (err) {
const msg = err instanceof Error ? err.message : String(err)
logger.warn(`Failed to remove agent files for ${entry.name}: ${pc.dim(msg)}`)
} finally {
removeEntry({ projectDir, slug: entry.slug })
syncClaudeMd(projectDir)
}
p.log.success(`Removed ${entry.name} from all agent directories`)
track({ event: 'remove', skills: entry.slug })
}