Standardized Python project scaffolding for humans and AI agents — 105 composable groups, group-aware templates, MCP server, and a community registry
pjkm has 10 tools with complete input schemas and descriptions. Naming follows verb_noun convention (init_project, add_groups, list_recipes). Descriptions are substantive (100-250 chars), explaining WHAT and WHEN. However, output schemas are undocumented (all tools return plain strings), parameter descriptions lack format constraints and validation guidance, and error handling is absent. No tool annotations (readOnlyHint/destructiveHint). Tools like init_project and add_groups are WRITE operations but lack confirmation patterns or dry-run support. Composition is reasonable, tools chain logically (list_recipes → init_project, list_groups → get_group_info), but responses are unstructured text, forcing LLMs to parse output manually.
Add package groups to an existing pjkm project. Merges dependencies into pyproject.toml, renders scaffolded files, and updates [tool.pjkm.groups].
Scan an existing project and suggest pjkm groups to adopt. Detects frameworks and tools from pyproject.toml, requirements.txt, and project structure (Dockerfile, alembic/, etc.).
Create a custom recipe YAML file for reuse. Saves a recipe definition that can be shared via git or group sources.
Get detailed information about a specific package group.
Create a new Python project with pjkm. Use `recipe` for a pre-configured setup (e.g. "fastapi-service", "ai-agent"), or specify `archetype` + `groups` for custom composition.
List available package groups, optionally filtered by category.
No output schemas documented. All 10 tools return plain strings (str). LLMs cannot parse structured results, extract IDs for chaining, or validate response format. Requires manual text parsing.
Destructive operations (init_project, add_groups, create_recipe) lack confirmation or dry-run support. No tool annotations (destructiveHint). Agents can accidentally create/modify projects without safeguards.
Parameter descriptions lack format constraints. 'directory' param has no guidance on absolute vs relative paths, existence checks, or permissions. 'groups' array has no min/max length. LLMs cannot validate inputs before calling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
List all 22 available project recipes. Returns recipe names, archetypes, group counts, and descriptions. Use a recipe name with init_project() to create a project.
Preview what a project would look like without creating it. Shows the file tree, dependencies, and workflows that would be generated.
Show the pjkm status of a project. Displays applied groups, archetype, and dependency drift.
Search the pjkm registry for community group packs.
No error handling guidance. Tools invoke CLI via CliRunner but do not document failure modes, recovery steps, or actionable error messages. LLMs receive raw stdout/stderr with no context.
list_recipes and list_groups lack pagination. Descriptions claim '22 available recipes' and multiple categories, but no limit/offset/page parameters. Large result sets will bloat context.