Goal: Every project should have a description in its pyproject.toml or package.json so choosectl list-project-descriptions returns real descriptions instead of CLAUDE.md fallbacks.
10 projects across ~/code/ and ~/experiment/ have manifest files but are missing proper descriptions. 3 have no description field at all in pyproject.toml, 4 have the placeholder "Add your description here", and 3 package.json projects are missing the field entirely. Many other directories (banking, dotfiles, email, etc.) have no manifest file and are out of scope.
| Project | Suggested description |
|---|---|
~/code/claudehooks |
"Test Claude Code hooks end-to-end via pexpect PTY harness" |
~/code/codebench |
"Benchmark codectl output against RepoPrompt and other generators" |
~/code/planctl |
"Manage project plans, epics, and tasks from the CLI" |
| Project | Suggested description |
|---|---|
~/code/fastclaude |
"Benchmark the fastest way to invoke Claude programmatically" |
~/code/scraping |
"Scrape and store web content with SQLite persistence" |
~/code/smolkey |
"QMK firmware and configuration for a Ryan Bates ElevenKey macropad" |
~/experiment/pdffiller |
"Fill and sign PDF forms programmatically with PyMuPDF" |
| Project | Suggested description |
|---|---|
~/code/bigtext |
"Render routable full-screen big text pages from YAML" |
~/code/nature |
"Identify plants, animals, and tracks with your camera" |
~/code/resume |
"Render resumes and cover letters from structured YAML data" |
| Project | Source | Description |
|---|---|---|
~/code/arthack |
(skipped) | polyglot monorepo |
~/code/codectl |
pyproject.toml | "Automatic context bundle generator for code projects" |
~/code/contextctl |
pyproject.toml | "Claude Code plugin for automatic codebase context injection via codectl" |
~/code/zalgoctl |
pyproject.toml | "The best damn Zalgo text generator on the planet" |
These directories have no pyproject.toml or package.json and are skipped:
banking, blackbird, blackbird-system, bodycams, content, docs, dotfiles, email, iconfind, jobsearch, mcp, midbird, music, notes, old, poptui, silverbird, voice-of-arthacker, and ~20 others that are notes/research directories.
choosectl checks in order:
pyproject.toml→[project].descriptionpackage.json→descriptionCLAUDE.md→ first prose sentence (fallback, capped at 100 chars)
Projects falling back to CLAUDE.md show up with prose-style descriptions that don't match the verb-phrase convention.