plnk-cli
Skill2 starsChanged 8 months agoMITView on GitHub
Use this skill when the user wants to inspect or manage Planka projects, boards, lists, cards, tasks, comments, labels, custom fields (field groups, fields, card field values), attachments, memberships, users, or authentication with the plnk CLI.
2 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- plattnum/planka-cliedited, first seen Nov 1, 2026
- julweber/ai_agent_skillsword for word, first seen Mar 20, 2026
Other versions2 projects use a version of this.
Word for word · 1
- julweber/ai_agent_skills★ 2100% same
Edited · 1
- plattnum/planka-cli★ 1873% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository51 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ai-agent-skills-assistantSkill
- ansibleSkill
- artificial-analysisSkill
- cavemanSkill
- claude-cliSkill
- code-doctorSkill
- code-summarizerSkill
- codex-cliSkill
- concourse-ciSkill
- dev-brainstormingSkill
- docker-cliSkill
- file-organizerSkill
- frontend-web-developerSkill
- github-actions-cicdSkill
- github-cliSkill
- gitlab-ci-cdSkill
- grill-meSkill
- gtd-assistantSkill
- herdr-cliSkill
- hf-cliSkill
- karpathy-guidelinesSkill
- kestraSkill
- list-large-filesSkill
- list-most-intensive-processesSkill
- llama-cppSkill
- llm-wikiSkill
- mermaidSkill
- morning-ritualSkill
- obsidian-masterSkill
- obsidian-open-loops-collectorSkill
- opencode-agent-creatorSkill
- opencode-cliSkill
- pi-cliSkill
- pi-subagents-masterSkill
- planka-development-flowSkill
- ponytailSkill
- product-prd-brainstormingSkill
- python-api-developerSkill
- ralph-prd-converterSkill
- ralph-prd-generatorSkill
- release-managementSkill
- rest-testsuite-skillSkill
- skill-loaderSkill
- design-taste-frontendSkill
- terraformSkill
- tmux-coderSkill
- tmux-specialistSkill
- trello-cliSkill
- tts-conversationSkill
- uvSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
28 rules. About 0 are common, 17 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Use plnk as the canonical interface to Planka.
- Very specific: line 18
If either fails, stop and tell the user what is missing — do not fall back to raw curl against the Planka REST API.
- Distinctive: line 24
Use this skill when the user wants to:
- Distinctive: line 27
create, update, move, archive, unarchive, or delete Planka resources
- Distinctive: line 29
add comments, tasks, assignees, labels, custom field values, or attachments to cards
- Very specific: line 34
Use plnk as the source of truth for Planka operations.
- Very specific: line 35
Prefer --output json for agent work unless the user explicitly asked for table or markdown output.
- Very specific: line 37
Use get for exact ID lookup.
- Very specific: line 38
Use find for name/title lookup.
- Very specific: line 40
Prefer the narrowest scope possible: --list over --board, --board over --project.
- Distinctive: line 41
Read before write when current state is unclear.
- Distinctive: line 42
After discovery, perform mutations using IDs, not names.
- Distinctive: line 43
Ask before destructive or bulk operations unless the user was already explicit.
- Distinctive: line 44
Do not maintain a parallel TODO system unless the user explicitly asks for one.
- Distinctive: line 48
All operations are hierarchical.
- Distinctive: line 79
When the user asks to inspect or modify Planka state:
- Distinctive: line 82
Prefer known IDs if already available.
- Very specific: line 86
Use --output json for anything the agent needs to read, compare, or pipe.
- Distinctive: line 90
If multiple candidates match, summarize them and ask the user which one they mean.
- Very specific: line 99
Ask before delete, archive, bulk edits, or wide-scope moves unless the user was explicit.
- Distinctive: line 108
Never assume that a board has any specific list names such as:
- Distinctive: line 117
When the user expresses workflow intent such as “move this to in progress”, “send this to review”, “put it in backlog”, or “mark this …
- Distinctive: line 121
ask for confirmation if multiple lists plausibly match
- Distinctive: line 141
Prefer JSON output for agent work:
- Distinctive: line 187
Prefer narrow scopes for both correctness and performance.
- Distinctive: line 237
If command syntax, flags, or resource behavior are uncertain, inspect machine-readable help instead of guessing:
- Very specific: line 249
All references are vendored locally in references/ — read them from disk, never fetch them from the network.
- Very specific: line 261
Start with commands.md for syntax, api-quirks.md when a result looks wrong, and grammar.md when you need exit codes or output-shape …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
plnk-cli
Use plnk as the canonical interface to Planka. Do not invent a parallel task API or assume a fixed kanban workflow. Operate through the CLI, prefer machine-readable output, and resolve ambiguity before mutating state.
Prerequisites
Requires the plnk binary on PATH and configured credentials. Check both before doing real work:
plnk --version && plnk auth statusIf either fails, stop and tell the user what is missing — do not fall back to raw curl against
the Planka REST API. See README.md for binary installation and
references/auth-and-transport.md for credential setup.
When to use this skill
Use this skill when the user wants to:
- inspect Planka projects, boards, lists, cards, tasks, comments, labels, attachments, memberships, or users
- create, update, move, archive, unarchive, or delete Planka resources
- find cards, lists, boards, or labels by name/title
- add comments, tasks, assignees, labels, custom field values, or attachments to cards
- understand or debug
plnkcommand behavior
Core Rules
- Use
plnkas the source of truth for Planka operations. - Prefer
--output jsonfor agent work unless the user explicitly asked for table or markdown output. - IDs are opaque strings. Pass them through exactly as returned.
- Use
getfor exact ID lookup. - Use
findfor name/title lookup. findmay return multiple results. Do not guess when matches are ambiguous.- Prefer the narrowest scope possible:
--listover--board,--boardover--project. - Read before write when current state is unclear.
- After discovery, perform mutations using IDs, not names.
- Ask before destructive or bulk operations unless the user was already explicit.
- Do not maintain a parallel TODO system unless the user explicitly asks for one.
Resource Hierarchy
All operations are hierarchical.
project
board
list
card
task
comment
attachment
custom field group ── custom field ── value
label
custom field group ── custom field
membership
base custom field group ── custom field (reusable template)Implications:
project findis the only unscopedfind.board findrequires--project.list findrequires--board.card findrequires exactly one of--list,--board, or--project.- tasks and comments live under cards
- labels live under boards
field-group listrequires exactly one of--project,--board, or--cardfield listrequires exactly one of--groupor--base-group- custom field values live under cards:
card field list|set|clear
Default Operating Procedure
When the user asks to inspect or modify Planka state:
- Identify the narrowest possible scope.
- Prefer known IDs if already available.
- Otherwise resolve names to IDs using
findorlist.
- Prefer JSON output.
- Use
--output jsonfor anything the agent needs to read, compare, or pipe.
- Use
- Resolve names before mutation.
- Find the project, board, list, card, label, or user first.
- If multiple candidates match, summarize them and ask the user which one they mean.
- Read current state before writing when context is incomplete.
- Inspect the current board/list/card/task state before moving or editing if the target is not fully specified.
- Mutate by ID.
- Once a target has been identified, use the returned IDs for
update,move,archive,delete,label add/remove,assignee add/remove, and similar operations.
- Once a target has been identified, use the returned IDs for
- Confirm destructive or broad actions.
- Ask before
delete,archive, bulk edits, or wide-scope moves unless the user was explicit.
- Ask before
- Report back with resolved names and IDs when useful.
- Especially after create/move/find operations or when ambiguity was resolved.
Lists and Workflow
Lists are board-defined and may vary across users, teams, and boards. Do not assume canonical columns.
Never assume that a board has any specific list names such as:
- Backlog
- In Progress
- Review
- Done
- Blocked
- WontDo
When the user expresses workflow intent such as “move this to in progress”, “send this to review”, “put it in backlog”, or “mark this blocked”:
- inspect the board's actual lists first
- map the user's intent to an existing list
- ask for confirmation if multiple lists plausibly match
Auth and Output
Credential precedence:
- CLI flags:
--server,--token - Environment:
PLANKA_SERVER,PLANKA_TOKEN - Config:
~/.config/plnk/config.toml(honorsXDG_CONFIG_HOME; override withPLANKA_CONFIG)
Tokens are sent as the X-API-Key header. plnk auth status always exits 0; use
plnk auth whoami when a script needs a non-zero exit on bad credentials.
Useful auth checks:
plnk auth status
plnk auth whoamiPrefer JSON output for agent work:
plnk board list --project <projectId> --output json
plnk card find --board <boardId> --title "auth" --output jsonJSON envelopes are shaped like:
{"success": true, "data": [...], "meta": {"count": 3}}and errors like:
{"success": false, "error": {"type": "ResourceNotFound", "message": "..."}}Important Constraints
getrequires an ID. Never usegetwith a name.findreturns collections, including zero or many matches.- Custom fields have three surfaces — do not conflate them:
plnk field-group— the groups (project-level ones are reusable templates)plnk field— the named slots inside a groupplnk card field— the values a card stores
- A card group adopted from a template has
name: nulland no fields of its own — its fields belong to the base group.field list --group <adoptedId>returning nothing is correct; askfield list --base-group <baseId>. Seereferences/api-quirks.md. card field set/clearaccept an ID or a name for--groupand--field, resolving through the base group. Values are capped at 512 chars, cannot be empty, andclearis idempotent.- There is no server-side filter by custom field value — filter a snapshot locally.
- There is no standalone
getfortask,comment, orlabel.- use
task list --card <cardId> - use
comment list --card <cardId> - use
label list --board <boardId> - or use
card snapshot/board snapshot
- use
- Card title is
namein all JSON output (the--titleflag is input-only), and card description is hidden fromcard get/card list—card create --descriptioncan even drop the body silently. Verify descriptions withcard snapshot. Seereferences/api-quirks.md. - Snapshot commands are best when nested state is needed in one call:
plnk project snapshot <projectId> --output jsonplnk board snapshot <boardId> --output jsonplnk card snapshot <cardId> --output json
- Prefer narrow scopes for both correctness and performance.
stdoutis for data.stderris for logs and diagnostics.
Command Patterns
Browse the hierarchy:
plnk project list --output json
plnk board list --project <projectId> --output json
plnk list list --board <boardId> --output json
plnk card list --list <listId> --output jsonFind resources by name/title:
plnk project find --name "Platform" --output json
plnk board find --project <projectId> --name "Sprint" --output json
plnk list find --board <boardId> --name "Backlog" --output json
plnk card find --board <boardId> --title "auth" --output jsonMutate a card:
plnk card create --list <listId> --title "Fix auth" --output json
plnk card update <cardId> --description @spec.md --output json
plnk card move <cardId> --to-list <listId> --position top --output jsonWork with tasks and comments:
plnk task list --card <cardId> --output json
plnk task create --card <cardId> --title "Write tests" --output json
plnk comment create --card <cardId> --text "Starting work" --output jsonWork with attachments (file/ID are POSITIONAL — there is no --file flag):
plnk attachment upload --card <cardId> /path/to/file --output json
plnk attachment list --card <cardId> --output json # .size is null in list/upload output
plnk attachment download <attachmentId> --card <cardId> --out /tmp/check.bin
# verify an upload by round-trip: download and `cmp` against the source fileWhen Unsure
If command syntax, flags, or resource behavior are uncertain, inspect machine-readable help instead of guessing:
plnk --help --output json
plnk card --help --output json
plnk card create --help --output jsonThen read the relevant references.
References
All references are vendored locally in references/ — read them from disk, never fetch them from
the network.
| File | Use it for |
| references/commands.md | Every command, flag, alias; "intent → command" lookup table; resolution playbooks |
| references/api-quirks.md | Planka API behaviors that change CLI usage; debugging surprising results |
| references/grammar.md | Grammar, scoping rules, output formats, JSON envelopes, exit codes, @file text input, stdout/stderr split |
| references/custom-fields.md | The field-group / field / card-field-value model, template adoption, --show-on-front, value rules |
| references/examples.md | Worked end-to-end examples, including scripted branching on exit codes |
| references/auth-and-transport.md | Credential precedence, token setup, retries, rate limits, HTTP tuning knobs |
Start with commands.md for syntax, api-quirks.md when a result looks wrong, and
grammar.md when you need exit codes or output-shape guarantees.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

