npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cotrrackpro-dev/cli

v0.1.25

Published

CoTrackPro CLI — a trauma-informed, child-centered, court-neutral documentation toolkit for developers and everyone else.

Readme


A trauma-informed, child-centered, court-neutral documentation toolkit for families navigating high-conflict separation — and the developers building for them. It runs in your terminal, is offline-first, and needs no account to explore.

For developers it's also a full platform CLI: authenticate with Clerk, download/publish private libraries with strict RBAC, run plugins, and launch MCP tools.

📘 New here? The How to use this repo PDF guide is a branded, five-minute walkthrough — install, the offline quickstart, authoring content, no-code apps, the community, and connecting an account. Regenerate it any time with npm run guide:pdf (source: docs/guide/how-to-use.html).

Preview release. While the @cotrackpro npm scope is being finalized, the CLI ships under a temporary scope: install with npm i -g @cotrrackpro-dev/cli (the command is still cotrackpro), or try it with no install via npx @cotrrackpro-dev/cli. It will move to @cotrackpro/cli once the scope is available — see CUTOVER.md for the scope-request draft + the one-command switch. Maintainers: see RELEASE.md and node scripts/publish-dev.mjs (defaults to the @cotrrackpro-dev preview scope).

Your data stays with you. The CLI is offline-first, sends no telemetry, and keeps your credentials in your OS keychain (or an encrypted local file). See PRIVACY.md and SECURITY.md. The native keychain addon is an optional dependency — if your platform has no prebuild, the CLI still installs and falls back to the encrypted-file store automatically.

See it in action

No install, no sign-in — try it straight from npm (preview scope for now):

npx @cotrrackpro-dev/cli                 # guided menu — pick a task, no account needed
npx @cotrrackpro-dev/cli glossary token  # plain-language definitions of the jargon
npx @cotrrackpro-dev/cli catalog         # browse the platform catalog, fully offline
npx @cotrrackpro-dev/cli nocode examples # starter no-code apps you can build on-device

Prefer the short command? Install once and it's cotrackpro everywhere:

npm i -g @cotrrackpro-dev/cli
cotrackpro                     # the guided menu (welcome-back greeting + streaks)
cotrackpro community showcase  # see what others built — and submit your own
cotrackpro setup               # when you're ready, connect your CoTrackPro account

Everything above the setup line works offline with no account. See the Cookbook for end-to-end recipes — connect Claude Desktop via MCP, diagram → approve → scaffold, broker a token into a CI script, and more.

Contributing / local development

Working on the CLI itself? Run it from source with tsx:

npm install
npm run dev -- whoami       # run via tsx (guided menu when run with no args)
npm run typecheck
npm test                    # vitest — SDK + CLI unit and integration tests
npm run test:coverage       # the same, with a v8 coverage report + floor

Testing. The engine and command logic (params, diagram, guide, workflow, community, scaffold, the catalog) is covered 80–100%; the rest is network/ interactive I/O shells (sign-in, keychain, transport) that aren't unit-testable. CI runs test:coverage with a regression floor so coverage can't crater, plus an end-to-end smoke that drives the real CLI (test/cli.integration.test.ts).

Layout

  • src/commands/ — setup, login, whoami, org, doctor, packages, verify, scaffold, catalog, artifacts, params, diagram, guide, workflow, nocode, community, project, propose, token, mcp, plugins, tools, workspace (run cotrackpro --help for the full set)
  • src/lib/ — auth, output, http, credential storage, plugins, interactive UI
  • sdk/@cotrackpro/sdk: the typed platform client (transport, pluggable auth, typed API resources, MCP/artifact bindings). The CLI consumes it via file:./sdk; it is built to be lifted into cotrackpro-foundations and published.
  • vendor/authz/ — local copy of @cotrackpro/authz (the shared RBAC contract). Replace with the published @cotrackpro/authz from CodeArtifact when ready.

The SDK

@cotrackpro/sdk is the shared, reusable surface every cotrackpro* repo (and any external/agent consumer) builds on instead of hand-rolling fetch + auth + errors. See sdk/README.md. The CLI's src/lib/http.ts is now a thin adapter over it (cliClient(cfg) / api()), and commands like whoami and org call the SDK's typed resource methods directly.

Browse the platform's programmatic catalog from the CLI — fully offline, no auth (reads the SDK's generated registries):

cotrackpro artifacts list            # all 133 typed artifacts
cotrackpro artifacts search incident # local fuzzy search
cotrackpro artifacts show incident-log
cotrackpro catalog                   # counts across every kind
cotrackpro catalog roles             # or: artifacts | workflows | skills | knowledge | scenarios | prompt-modules | safety

Spin up the whole ecosystem locally so every repo shares this CLI's SDK:

cotrackpro workspace list                 # the ~40 cotrackpro* repos (core | feature)
cotrackpro workspace status               # which are cloned in the current dir
cotrackpro workspace clone --category core --dry-run   # preview, then drop --dry-run / add --yes
cotrackpro workspace link                 # point each repo's @cotrackpro/sdk at ./cotrackpro-cli/sdk

Create your own parameters

Author your own parameter sets — custom typed field schemas (a small form like an incident log or a custody-exchange checklist) — fully offline. Definitions are saved as a standards-compliant JSON Schema in ./.cotrackpro/params/<name>.json (the same format the portal builder produces — the same shared format the Intervention Builder uses for its items/templates), and the shared @cotrackpro/sdk/params logic validates, fills, and renders them everywhere.

cotrackpro params new my-set                 # interactive builder (or --from a JSON Schema)
cotrackpro params list                        # your saved sets
cotrackpro params validate my-set             # check the definition
cotrackpro params fill my-set                 # collect values → a filled markdown document
cotrackpro params types my-set                # generate a TypeScript interface
cotrackpro params prompt my-set               # a prompt to paste into your AI assistant
cotrackpro scaffold my-module --params my-set # a new module pre-wired with the set

Definitions are shareable schemas (no family data). Filled documents can contain confidential information — they default to stdout, ./.cotrackpro/filled/ is gitignored, and every output is educational/informational only, not legal or clinical advice.

Author from the catalog — diagrams, guides, projects, and the Studio

Compose working content from the platform catalog, fully offline. Each generator is a shared, import-free @cotrackpro/sdk core consumed identically by the CLI and the developer portal — so what you build in either place is the same.

# Visualize & approve: turn a document or parameter set into an approvable Mermaid diagram
cotrackpro diagram extract process.md --out docs/diagram.md
cotrackpro scaffold my-tool --diagram docs/diagram.md   # builds only when Status: Approved

# Operational guides: dual-audience onboarding + feedback playbooks from the catalog
cotrackpro guide list
cotrackpro guide new school-incident-tool --out docs/onboarding.md
cotrackpro guide new school-incident-tool --prompt       # a prompt to paste into your AI assistant
cotrackpro guide feedback                                # a GitHub "Guide feedback" issue form

# Project blueprints: scaffold an interdisciplinary starter module
cotrackpro project list
cotrackpro project new school-incident-tool

# Workflow Studio: one source → three synchronized projections
cotrackpro workflow render school-incident-tool --as playbook   # the no-code markdown
cotrackpro workflow render school-incident-tool --as commands   # the CLI/CloudShell sequence
cotrackpro workflow render school-incident-tool --as assets --out ./my-tool   # the scaffolded files

The Studio's three views are projections of one source, so the portal and cotrackpro workflow produce byte-identical output — code and no-code never drift.

Build a no-code app on your device

A no-code app is a small local-first graph (.ctp.json): capture input → run simple deterministic steps on your device → hand the heavy/AI work to an MCP tool → surface a result. The visual, drag-and-drop authoring surface is the web builder; the CLI runs, validates, repairs, and diagrams the app it produces — the exact same @cotrackpro/sdk/nocode core on both sides, so definitions round-trip.

cotrackpro nocode examples                    # starter apps you can create
cotrackpro nocode new incident-note --out app.ctp.json   # copy a starter (or `blank`)
cotrackpro nocode build                       # open the drag-and-drop visual builder
cotrackpro nocode fix app.ctp.json            # auto-repair: derive variables + MCP allow-list
cotrackpro nocode validate app.ctp.json       # schema, dangling edges, on-device ops, cycles
cotrackpro nocode run app.ctp.json --trace    # run the on-device steps, show each result
cotrackpro nocode mermaid app.ctp.json        # render it as a flowchart

nocode fix saves you the toil of keeping variables and settings.mcp in sync with the nodes by hand — it derives them from the graph, the same way the web builder does. Steps that call an AI/MCP tool can't run offline in the terminal, so nocode run mocks them: pass --mock <file> with sample answers keyed by "serverId/toolName" to test the whole flow.

Developer community — tiers, XP & badges

The membership-tier contract (Explorer → Builder → Scholar → Maintainer) and the recognition layer live in @cotrackpro/sdk/community, so the Join page, the CLI, and the cotrackpro-slack app share one source of truth. Tiers declare scopes; they never grant them (enforcement stays server-side).

cotrackpro community tiers                       # capability + Slack access per tier
cotrackpro community show maintainer             # one tier's cumulative scopes + channels
cotrackpro community events                       # the XP the community recognizes
cotrackpro community badges                        # the badges and how they're earned
cotrackpro community log merge-pr                 # track a contribution in your local ledger
cotrackpro community xp                            # score your local ledger (or --events / --file)
cotrackpro community card --copy                   # a shareable progress card, copied to your clipboard
cotrackpro community invite --copy                 # a referral link + message, copied to your clipboard
cotrackpro community showcase --open               # submit a tool you built to the Showcase (earns Showcased)
cotrackpro feedback 👍                              # tell us what's working (opens a pre-filled issue you submit)

The ledger is a personal, offline tally to track your own journey — the authoritative tier/XP comes from your CoTrackPro identity, server-side. community card turns that tally into a paste-ready markdown snippet (XP, badges, streak + an attributable invite link) so a win can bring the next builder in.

Gated access for developer packages (the CLI as broker)

The CLI is the single gatekeeper of your credentials. Any local package, script, or agent retrieves gated platform data through a short-lived, RBAC-scoped token the CLI mints — without ever holding credentials:

# Broker a scoped token into your shell, then run any SDK-based script:
eval "$(cotrackpro token --scopes org:packages:read --export)"
node my-script.js          # uses clientFromBrokerEnv() from @cotrackpro/sdk

# Or scaffold + register a local plugin; the CLI injects a scoped token on launch:
cotrackpro scaffold reporter --plugin --scopes org:packages:read
cotrackpro plugins register ./cotrackpro-reporter

In code, a package just calls clientFromBrokerEnv() (from @cotrackpro/sdk) and gets a client authenticated with the brokered token. The keychain and RBAC stay in the CLI.

In CI, the CLI authenticates from a COTRACKPRO_TOKEN secret (no keychain needed), so it can broker a scoped token for the rest of a job without exposing your long-lived credential. Drop in the bundled composite action:

- uses: dougdevitre/cotrackpro-cli/.github/actions/broker-token@main
  with:
    scopes: org:packages:read
    token: ${{ secrets.COTRACKPRO_TOKEN }}
- run: node my-script.js     # sees the masked COTRACKPRO_PLUGIN_TOKEN, not the secret

See Cookbook §5 for the raw-CLI equivalent.

Regenerate the typed registries from the CoTrackPro MCP catalog:

npm run codegen             # artifacts (133) + roles/workflows/scenarios/prompt-modules
npm run codegen:check       # CI drift gate — fails if generated code is stale

Releases (signed binaries + installers) are added later via a separate workflow.