manuelmauro/arkouda/use-arkouda
Claude Code and agent skill by manuelmauro/arkouda
- community
Checking that the SKILL.md file is still in the repository.
Find prior decisions and product requirements, and record new ones, in a repo's arkouda collection of ADRs (Architecture Decision Records) and PRDs (Product Requirements Documents). Invoke any time you're about to make a non-trivial design, architecture, library, schema, or convention decision, or about to build a feature — check what was already decided and what is already required before deciding, and capture the outcome afterwards.
Install
npx vskill@latest install manuelmauro/arkouda/use-arkoudaSKILL.md
Using arkouda
In repositories that record decisions and requirements as Markdown files with YAML frontmatter (conventionally under docs/adr/ and docs/prd/), arkouda is the CLI for finding, reading, validating, and scaffolding them. Before you decide, check what's already been decided. Before you build, check what's already required. After you decide, capture it.
An arkouda directory is an Open Knowledge Format (OKF) v0.2 knowledge bundle: each document is a concept whose id is its path within the bundle without the .md suffix (security/mtls.md → security/mtls). index.md and log.md are reserved by OKF and are never concepts.
If a repo has no such directory yet but the arkouda binary is installed, this skill is also the right one to reach for: arkouda new enforces the schema from the first file.
Concept types
Arkouda has two built-in types, and picking the wrong one produces a document that fails arkouda check.
ADR (--type adr, the default) | PRD (--type prd) | ||
|---|---|---|---|
| Answers | Why is the software built this way? | What is the software supposed to do? | |
| Write one when | you commit to a library, datastore, transport, layout, convention, or trade-off | you start on a feature whose scope, boundaries, or success criteria aren't written down | |
lifecycle | proposed, accepted, superseded, deprecated, rejected | draft, in-review, approved, shipped, abandoned, superseded | |
| Required sections | Status, Context, Decision, Consequences | Status, Problem, Requirements, Non-Goals, Success Metrics | |
| Primary section | Decision | Requirements | |
| Default directory | docs/adr | docs/prd |
The two are linked from the PRD side: a PRD's decisions frontmatter key lists the concept ids of the ADRs that shaped it. Traverse from a requirement to its rationale by reading that key — never by restating the decision inside the PRD.
Apart from `Status`, the two share no section headings. A PRD has no ## Context; its motivation is ## Problem. Asking for a section the concept's type doesn't have is an error, not a near-miss. If you don't know which type a concept is, run arkouda list -l and read the type column, or just omit the section name and let arkouda pick the primary one.
The project may define more
A project can declare its own types with `[[types]]` in `.arkoudarc.toml`, and it can replace the built-in ADR or PRD contract with its own. So the two tables above describe arkouda's defaults, not necessarily this repo. Before you scaffold anything in an unfamiliar repo:
A [[types]] table gives its type a slug (what --type takes), an okf_type (what its documents declare), a status lifecycle, optionally required_sections and a primary_section, a default_dir, and optionally a template. Read the table and follow it exactly as you would the built-in contracts — arkouda new --type <slug> scaffolds from it, and arkouda check enforces it.
arkouda new --type <slug> with an unknown slug lists the slugs that do exist, so that error is the fastest way to see this repo's types if there is no config file to read.
When to use
Reach for this skill any time you're about to make a non-trivial decision or start non-trivial work. Concretely:
- Before writing code that picks a library, framework, datastore, encoding, transport, or other "we now depend on X" commitment. (ADR)
- Before changing a public interface, file layout, schema, naming convention, or directory structure. (ADR)
- Before refactoring away from a pattern you didn't introduce — you may be about to undo a deliberate decision. (ADR)
- Before building a feature of any size: check whether a PRD already defines its scope, its non-goals, and what success means. (PRD)
- When the user asks "did we ever decide on X?", "why is it done this way?", "what are we building?", or "is X in scope?".
- When the user asks for a new ADR or PRD, or to mark one superseded.
- Whenever you land in an unfamiliar repo with an arkouda collection.
A 5-second arkouda list | xargs rg -i <topic> is cheaper than redoing a debate that's already in the file, or building something a PRD explicitly listed as a non-goal.
Philosophy
Three principles shape arkouda's behaviour, and explain why some defaults look minimal:
- Defer to Unix tools. Arkouda earns subcommands only where standard shell tools (
rg,grep,cat,awk,xargs) cannot. Content search, full-file printing, counting, and slicing are left to the shell — the CLI emits structured output you compose with the rest of your toolbox. Hence: nosearch, no full-fileshow. - Primary-section defaults.
arkouda listprints one path per line (no header, no padding) so it pipes cleanly. Each type has one section carrying its substance, soarkouda section <id>with no section name prints that one —## Decisionfor an ADR,## Requirementsfor a PRD. Supporting sections are named explicitly. - Standard format over bespoke. Documents are stored as OKF concepts, and a concept's
typeis a frontmatter field, so any OKF-aware consumer can read them and one bundle can hold both types.
The source rationale lives in arkouda's own repo, in the ADRs `defer-to-unix-tools`, `ls-style-list-and-decision`, `adopt-okf`, and `support-product-requirements-documents`.
Where documents live
The location varies between repos. Don't hardcode docs/adr/ in pipelines — ask arkouda. Run `arkouda list` to get the actual paths for the repo you're in.
Arkouda finds bundles; nothing configures them. A bundle is the topmost directory that directly contains an OKF concept — a non-reserved .md whose frontmatter declares a type — and everything beneath it belongs to that bundle, so a nested concept keeps its path in its id. list, check, section, and index read every bundle found; type comes from frontmatter, never from the directory.
The walk skips .git, node_modules, target, vendor, dist, build, out, .next, .venv, venv, __pycache__, coverage, and hidden directories.
To scope one invocation to part of the tree, use --dir <path> or ADR_DIR=<path>. It narrows the walk rather than declaring a root.
arkouda new writes into the first bundle that already holds a concept of the type it is creating, then the --dir you named, then that type's default_dir.
`.arkoudarc.toml` no longer says where bundles are. A dirs key is an error naming its replacement; delete it. The file's remaining jobs are declaring [[types]] and the telemetry toggle.
A concept id is the document's path within its bundle, minus the .md suffix — not just the filename. A top-level use-postgres.md has the id use-postgres; a nested security/mtls.md has the id security/mtls. arkouda section accepts the full concept id (security/mtls), the bare stem (mtls), or the filename.
Commands
Five subcommands, each doing something the shell can't:
- `arkouda list [--sort id|timestamp|status] [--type <slug>] [-l]` — one path per line. Pipe straight into
xargs/rg/cat/wc. With-l, a headerlessID TYPE STATUS TIMESTAMP PATH TITLE — DESCRIPTIONtable for human skimming and forawk.--typefilters by frontmatter type; valid slugs are this project's, not a fixedadr|prd. - `arkouda section <id> [<name>]` — body of that concept's primary section (
Decisionfor an ADR,Requirementsfor a PRD). Give a<name>for any other heading (context,consequences,problem,non-goals,success metrics,status, or custom). Errors if the section is missing. For the full file, resolve the path througharkouda listandcatit. - `arkouda check` — validates in three tiers: OKF conformance for every concept, arkouda's frontmatter profile for concepts whose
typethe project configures, and that type's status vocabulary and required sections. Exit 0 clean, 1 on any error. Each diagnostic carries a code (E000–E015) and a fix hint. Warnings never fail the run. A concept whosetypeno[[types]]table configures is checked for OKF conformance only and warned about (E005) — it is neither skipped nor a failure. - `arkouda new "<title>" [--type <slug>] [--id <slug>] [--status <value>] [--description "<one-line summary>"]` — scaffold a new concept with today's date, from that type's template. Defaults to
--type adr. That default keeps working when a project redefines theadrslug — you get its contract instead of the built-in one — and fails only when the project has noadrslug at all, in which case the error names the slugs it does have.--statusmust come from the chosen type's own vocabulary and defaults to the first of its lifecycle (proposedfor an ADR,draftfor a PRD); it is written tolifecycle, and the OKFstatusit projects onto is written alongside it. Default id is a slug from the title. The description should summarize what was decided or what is being built, not just the topic. Refreshesindex.mdif the bundle has one. - `arkouda index` — regenerate each bundle's
index.md, an OKF §6 listing of every concept under# <Type>then## <Status>. Read it to see the whole collection at a glance without opening any file.
Global flags: --dir <path> (also ADR_DIR), -q/--quiet. Run arkouda --help or arkouda <subcommand> --help for the authoritative surface.
There is intentionally no search subcommand and no full-file show — rg/grep and cat already do those.
One-liners
arkouda list is the path source — it's where the documents actually are in this repo.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/use-arkouda/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/manuelmauro/arkouda/use-arkouda)