Help us improve
Share bugs, ideas, or general feedback.
From interkasten
Interactive Project Discovery & Layout
npx claudepluginhub mistakeknot/interagency-marketplace --plugin interkastenHow this skill is triggered — by the user, by Claude, or both
Slash command
/interkasten:layoutThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide the user through discovering, organizing, and registering their projects for Notion sync.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Guide the user through discovering, organizing, and registering their projects for Notion sync.
Use when: user says "set up projects", "discover projects", "organize my projects", "layout", or invokes /interkasten:layout.
interkasten_scan_preview, interkasten_register_project, interkasten_set_project_parent, interkasten_set_project_tags, interkasten_add_database_property, interkasten_gather_signals)interkasten_init completed (database exists)Call interkasten_scan_preview with no arguments (uses configured projects_dir).
Present the discovered tree to the user as a visual hierarchy:
Found 14 projects:
~/projects/Interverse/ [.beads]
os/clavain/ [.git, .beads] 15,000 LOC 247 commits
plugins/interflux/ [.git, .beads] 3,200 LOC 89 commits
plugins/interkasten/ [.git, .beads] 4,500 LOC 156 commits
plugins/intermute/ [.git, .beads] 2,100 LOC 63 commits
...
~/projects/standalone-tool/ [.git] 800 LOC 12 commits
Symlinks skipped: ~/projects/clavain → (duplicate of os/clavain)
Ask: "Does this look right? Any projects missing or incorrectly grouped?"
Walk through the tree with the user:
.beads nesting: "Interverse is the parent of clavain, interflux, etc. because they're nested inside its .beads boundary. Does this grouping look correct?"interkasten_set_project_parent to adjust hierarchy per user feedback.For each project (or batch of similar ones), look at the signals from interkasten_gather_signals and propose:
Doc tier with reasoning:
Tags based on signals:
has_plugin_json → suggest "claude-plugin"has_go_mod → suggest "go"has_dockerfile → suggest "deployable"Status: "Active" for recent commits, "Archived" for stale projects. Let the user override.
Present proposals in batches (3-5 projects at a time) to avoid overwhelming the user. Group similar projects together.
Before registering projects, set up the database schema:
Ask: "Your Projects database currently has Name and Last Sync. I'd recommend adding these properties — want all of them, or just some?"
Recommended properties:
Optional properties (suggest if relevant signals exist):
Call interkasten_add_database_property for each confirmed property.
Register confirmed projects with their confirmed properties. Parent-first, children after to ensure parent_id references are valid.
For each project:
interkasten_register_project with path, parent_project (if applicable), and properties (Status, Doc Tier, etc.)interkasten_set_project_tags with the confirmed tagsShow progress: "Registered 5/14 projects..."
For each registered project, scan for syncable files:
interkasten_scan_files with pattern: "**/*.md" and include_size: truePresent: "Found 8 markdown files in clavain. I'd sync these 5 key/project docs. The other 3 look like working notes — want to include them?"
Register selected files for sync via the existing doc registration flow.
Handle these user intents naturally:
| User says | Action |
|---|---|
| "These are all part of the same project" | set_project_parent to group them |
| "This one is standalone" | Register with parent: null |
| "Skip this" / "Don't register this one" | Skip registration, move to next |
| "These are all plugins" | Batch-tag with set_project_tags |
| "Re-scan" / "Scan again" | Re-run scan_preview |
| "Add a custom field" | add_database_property with user's spec |
| "What does this project do?" | Read its README.md or CLAUDE.md and summarize |
| "Show me the Notion page" | Provide the Notion URL from the entity |
| "I reorganized my projects" | Full re-scan, detect orphans (registered but path missing) |
| "Just register everything" | Batch-register all with reasonable defaults, minimal prompting |
If the user has many projects (>10), offer batch mode:
"You have 23 projects. Want me to:
For option 2: classify all projects, present a summary table, ask for corrections, then batch-register.
After layout is confirmed, save layout preferences to config via interkasten_config_set:
layout:
resolve_symlinks: true
overrides:
- path: "~/projects/Interverse/experiments"
skip: true
This ensures future re-scans respect the user's decisions.
scan_preview finds no projects: suggest checking projects_dir in configINTERKASTEN_NOTION_TOKENEnd with a summary:
Layout complete!
Registered: 12 projects (3 Product, 7 Tool, 2 Inactive)
Hierarchy: 1 monorepo (Interverse) with 10 children, 2 standalone
Tags: claude-plugin (5), go (2), deployable (3), mcp-server (4)
Files selected for sync: 47 docs across 12 projects
Notion database: https://notion.so/...
Next steps:
- Run /interkasten:onboard to generate missing docs and establish drift baselines
- Run interkasten_sync to push selected files to Notion