Testing Patterns
softspark/ai-toolkit
Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
Explains how to run and extend the clickup-cli tests: unit tests with a mocked client, e2e tests against a real ClickUp workspace, and the fixture data they rely on.
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install krodak/clickup-cli testing-clickup-cli --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .claude/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .claude/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cliType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install krodak/clickup-cli testing-clickup-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .agents/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .agents/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install krodak/clickup-cli testing-clickup-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .cursor/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .cursor/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/krodak/clickup-cli.git --path .agents/skills/testing-clickup-cli--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install krodak/clickup-cli testing-clickup-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .gemini/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .gemini/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install krodak/clickup-cli testing-clickup-cliInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .github/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .github/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add krodak/clickup-cli --skill testing-clickup-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install krodak/clickup-cli testing-clickup-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/krodak/clickup-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/testing-clickup-cli .opencode/skills/testing-clickup-cli && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "testing-clickup-cli" agent skill from https://github.com/krodak/clickup-cli/tree/main/.agents/skills/testing-clickup-cli into .opencode/skills/testing-clickup-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-clickup-cli", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
testing-clickup-cliExplains how to run and extend the clickup-cli tests: unit tests with a mocked client, e2e tests against a real ClickUp workspace, and the fixture data they rely on.
This skill is a testing guide for the clickup-cli project. It describes two suites. Unit tests, run with npm test, cover all commands, the API client, formatters and config with the ClickUp client mocked. End-to-end tests, run with npm run test:e2e, make real API calls against a live ClickUp workspace. Unit tests run in CI and a global setup builds the project first, while e2e tests are not part of CI.
E2E runs need a CLICKUP_API_TOKEN in .env.test and use the personal workspace profile. The guide lists the fixtures pre-populated in the E2E Tests space: a sprints folder with three sprint lists, a backlog list for create-and-delete lifecycle tests, eleven tasks with varied statuses, priorities and tags, subtasks, a checklist, comments, a dependency and an overdue task. A second space tracks releases and is not used by tests. Lifecycle tests in tests/e2e/lifecycle.e2e.ts create data, verify it and clean up.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a775de5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CLICKUP_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ClickUp CLI Testing loads about 1.4k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 463 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
2E tests require `CLICKUP_API_TOKEN` in `.env.test` and are not part of CI.:e2e # e2e tests (needs .env.test)# .env.test (gitignored)Copy from `.env.test.example` and fill in your token.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from krodak/clickup-cli at commit a775de5, republished under its MIT licence (© krodak). 463 words, ~1,365 tokens.
.claude/skills/testing-clickup-cli/SKILL.md (or your agent's skills folder).| Suite | Command | Files | What it tests |
|---|---|---|---|
| Unit | npm test | tests/unit/**/*.test.ts | All commands, API client, formatters, config. Mocks ClickUpClient. |
| E2E | npm run test:e2e | tests/e2e/**/*.e2e.ts | Real API calls against a live ClickUp workspace. |
Unit tests run in CI. E2E tests require CLICKUP_API_TOKEN in .env.test and are not part of CI.
npm test # all unit tests
npm test -- tests/unit/commands/ # just command tests
npm test -- -t "sprint" # filter by test name
npm run test:e2e # e2e tests (needs .env.test)The unit test global setup runs npm run build before tests start.
Tests run against the personal ClickUp workspace (profile: personal).
Pre-populated with test fixtures:
| Fixture | What it contains |
|---|---|
| Sprints folder | 3 sprint lists with (M/DD - M/DD) date ranges. Sprint 2 is "current". |
| Backlog list | General tasks for CRUD testing. E2E lifecycle tests create/delete tasks here. |
| Tasks | 11 tasks with varied statuses, priorities, assignees, due dates, tags. |
| Subtasks | 3 subtasks under "Implement user authentication". |
| Checklist | "CI Steps" with 5 items (3 resolved). |
| Tags | backend, frontend, security, design, bug. |
| Comments | 2 comments on the auth task. |
| Dependencies | "Design landing page" depends on "Set up CI pipeline". |
| Overdue task | "Fix login redirect bug" in Sprint 1 with past due date. |
Project tracking space. Not used for tests - used for tracking releases and features.
These create test data, verify operations, and clean up:
| Suite | Tests | Coverage |
|---|---|---|
| Task lifecycle | 13 | Create, read, update, subtask, comment, checklist, delete, confirm gone |
| Tag lifecycle | 4 | Add tag, verify, remove, verify removed |
| Time tracking | 5 | Start timer, check running, stop, log entry, list entries |
Each suite uses beforeAll to find the Backlog list and afterAll to clean up created tasks.
Tests API client methods directly: getSpaces, getLists, getTask, sprint detection.
Every command test mocks the API client with vi.mock:
const mockGetTask = vi.fn().mockResolvedValue({ id: 't1', name: 'Task' })
vi.mock('../../../src/api.js', () => ({
ClickUpClient: vi.fn().mockImplementation(function () {
return { getTask: mockGetTask }
}),
}))The function keyword (not arrow) is required for Vitest 4's new semantics.
Commands export pure functions. Tests import and call them directly:
const { updateTask } = await import('../../../src/commands/update.js')
await updateTask({ apiToken: 'pk_t', teamId: 'team1' }, 't1', { status: 'done' })
expect(mockUpdateTask).toHaveBeenCalledWith('t1', { status: 'done' })tests/unit/commands/completion.test.ts verifies that:
src/commands/metadata.tsdocs/commands.md quick reference section matches what metadata generatesIf you add a new command, you MUST add it to metadata.ts. If you add new flags, add them too. Then run node --import tsx scripts/sync-command-docs.ts to regenerate the docs.
tests/unit/commands/<name>.test.tsClickUpClient with the methods your command usesnpm test -- tests/unit/commands/<name>.test.tstests/e2e/lifecycle.e2e.ts or create a new *.e2e.ts fileafterAlldescribe.skipIf(!TOKEN) to skip when no API token is setnpm run test:e2e# .env.test (gitignored)
CLICKUP_API_TOKEN=pk_... # personal workspace tokenCopy from .env.test.example and fill in your token.
© krodak, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/testing-clickup-cli of krodak/clickup-cli.
Open the folder on GitHubat commit a775de5
ClickUp CLI Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ClickUp CLI Testing this skillkrodak/clickup-cli | 120 | — | ~1.4k | Automated safety check: Notes | MIT | |
| Testing Patternssoftspark/ai-toolkit | 179 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Testingweb-infra-dev/rstest | 505 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Parse Error Logsmaslennikov-ig/claude-code-orchestrator-kit | 259 | — | ~1.5k | Automated safety check: Pass | Custom licence | |
| Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk | 11k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Interactive CLI Testing With tui-testslopus/happy | 24k | — | ~603 | Automated safety check: Pass | MIT |
softspark/ai-toolkit
Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
web-infra-dev/rstest
Testing workflow for the Rstest monorepo. An agent skill from web-infra-dev/rstest.
maslennikov-ig/claude-code-orchestrator-kit
Parse build errors, test failures, type-check output, and validation logs into structured data.
github/copilot-sdk
Creates a Java SDK end-to-end test for the Copilot SDK that runs against a recorded YAML snapshot through a replay proxy, so CI needs no real authentication.
slopus/happy
Tests interactive CLI and TUI programs with Microsoft's tui-test, driving prompts, arrow keys and screen output in a real pseudo-terminal.
CloudAI-X/claude-workflow-v2
Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.
krodak/clickup-cli
Lets your agent read and change ClickUp tasks, sprints, comments, Docs, Chat, views and webhooks through the cup command-line tool.
krodak/clickup-cli
Walks through releasing a new version of clickup-cli: pre-release checks, version bump, tagging, CI watch, release notes and the Homebrew update.
Works with
Categories
Explains how to run and extend the clickup-cli tests: unit tests with a mocked client, e2e tests against a real ClickUp workspace, and the fixture data they rely on. This skill is a testing guide for the clickup-cli project. It describes two suites.
ClickUp CLI Testing fits situations like: running the clickup-cli unit or e2e test suite; adding test coverage for a new clickup-cli command; debugging a failing test against the E2E ClickUp workspace; finding out what fixture data the e2e tests expect.
Run `npx skills add krodak/clickup-cli --skill testing-clickup-cli -a claude-code`. Or copy the skill folder (.agents/skills/testing-clickup-cli in krodak/clickup-cli) into .claude/skills/testing-clickup-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add krodak/clickup-cli --skill testing-clickup-cli -a codex`. Or copy the skill folder (.agents/skills/testing-clickup-cli in krodak/clickup-cli) into .agents/skills/testing-clickup-cli in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add krodak/clickup-cli --skill testing-clickup-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-clickup-cli, .gemini/skills/testing-clickup-cli, .github/skills/testing-clickup-cli and .opencode/skills/testing-clickup-cli in your project.
Going by SKILL.md and its folder, ClickUp CLI Testing needs the command-line tools its instructions call (npm and node) and credentials named CLICKUP_API_TOKEN. Our summary lists: Node and npm; A CLICKUP_API_TOKEN in .env.test for e2e tests; Access to the E2E test ClickUp workspace.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
ClickUp CLI Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with ClickUp CLI Testing: Testing Patterns (softspark/ai-toolkit, 179 stars), Testing (web-infra-dev/rstest, 505 stars), Parse Error Logs (maslennikov-ig/claude-code-orchestrator-kit, 259 stars) and Java SDK E2E Test with Replay Snapshot (github/copilot-sdk, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
krodak (a GitHub user) maintains it in krodak/clickup-cli, which has 120 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.
Source: krodak/clickup-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.