From cluvo-plugin
Install @cluvo/sdk and add basic bug reporting to a CLI/SDK project. Detects runtime (Node.js/Bun), package manager (npm/yarn/pnpm/bun), finds the entry point, and inserts new Reporter() + wrapCommand boilerplate. TRIGGER when: user asks to "add cluvo", "install cluvo", "cluvo 설치", "cluvo 연동", "add bug reporting", "버그 리포팅 추가".
How this skill is triggered — by the user, by Claude, or both
Slash command
/cluvo-plugin:cluvo-setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Install `@cluvo/sdk` and wire up basic bug reporting in one pass.
Install @cluvo/sdk and wire up basic bug reporting in one pass.
Check which runtime and package manager the project uses:
| Signal | Runtime | Package Manager |
|---|---|---|
bun.lockb exists | Bun | bun |
pnpm-lock.yaml exists | Node.js | pnpm |
yarn.lock exists | Node.js | yarn |
package-lock.json exists | Node.js | npm |
| None of the above | Node.js | npm (default) |
@cluvo/sdkRun the install command for the detected package manager:
npm install @cluvo/sdkyarn add @cluvo/sdkpnpm add @cluvo/sdkbun add @cluvo/sdkLook for the CLI/app entry point in this order:
package.json → bin field (if CLI tool)package.json → main or module fieldsrc/index.ts, src/cli.ts, src/main.ts, src/index.js, src/cli.jsIf multiple candidates exist, ask the user which one to use.
package.jsonRead package.json to get:
name → app.nameversion → app.versionrepository.url or repository → repo (extract owner/repo format)If repository is not set, ask the user for the GitHub owner/repo.
| Project Type | Preset | Integration Pattern |
|---|---|---|
CLI tool (has bin field) | 'cli' (default) | wrapCommand or wrap |
| SDK/library | 'sdk' | wrap with rethrow: false |
For CLI tools (default, preset: 'cli'):
import { Reporter } from '@cluvo/sdk'
const cluvo = new Reporter({
repo: '<owner>/<repo>',
app: { name: '<name>', version: '<version>' },
})
await cluvo.wrapCommand(async () => {
// ... existing entry point code ...
})
For SDK/library projects (preset: 'sdk'):
import { Reporter } from '@cluvo/sdk'
const cluvo = new Reporter({
repo: '<owner>/<repo>',
app: { name: '<name>', version: '<version>' },
preset: 'sdk',
})
export async function riskyOperation() {
await cluvo.wrap(async () => {
// ... operation logic ...
}, { rethrow: false })
}
Important notes:
wrapCommand catches errors, extracts process.argv context, runs the sanitize → prompt → submit pipeline, then re-throws the original error (unless { rethrow: false } is passed).wrap is like wrapCommand but without CLI-specific process.argv context extraction.'sdk' preset disables interactive prompting and argv collection. Errors are stored locally and can be forwarded to a parent CLI reporter via the registry.require), use require('@cluvo/sdk') instead.After successful integration, inform the user:
Cluvo basic setup complete. Errors thrown inside
wrapCommandwill now be captured, sanitized, and presented to users as GitHub issue drafts.Next steps:
- To add error reporting at specific try/catch locations → use
/cluvo-find-handlers- To customize sanitize rules, labels, or issue format → use
/cluvo-custom-config
Read references/sdk-api.md for the full Reporter constructor and instance API.
npx claudepluginhub maintainer-ally/cluvo --plugin cluvo-pluginCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.