npx claudepluginhub kmorebetter/better-software-of-you<project name> [--client <name>] [--status <status>] or "list" or "task <project> <task title>"/projectManages project boards: shows active project info and task overview, creates new boards with .kanban/ init, lists all projects, switches active project.
/projectAutonomously analyzes the project: detects type and technologies, loads skills, runs code analysis, outputs top findings in terminal, saves detailed report to file.
/projectManages project context: detects frameworks/package managers/agents/tests/env/cache, shows detailed status. Supports subcommands like status, refresh, init, switch, list, config.
/projectinit | analyze | board | embed | generate | mcp | setup | skills | observe | reference [--power, --json]
/projectClone and track external repos. Use when user shares GitHub URL to study or develop, or says "search repos", "find repo", "where is [project]". Actions - learn (clone for study), incubate (clone for development), search/find (search repos), list (show tracked).
Handle project and task operations based on $ARGUMENTS. Database at ${CLAUDE_PLUGIN_ROOT:-$(pwd)}/data/soy.db.
Parse project name and optional flags (--client, --status, --priority, --target).
If --client is specified, look up the contact:
SELECT id FROM contacts WHERE name LIKE '%client_name%';
Run both statements in a single sqlite3 call (so last_insert_rowid() works correctly):
INSERT INTO projects (name, description, client_id, status, priority, start_date, target_date)
VALUES (?, ?, ?, ?, ?, date('now'), ?);
INSERT INTO activity_log (entity_type, entity_id, action, details)
VALUES ('project', last_insert_rowid(), 'created', json_object('name', ?));
Confirm with project details. If client was linked, mention the connection.
SELECT p.id, p.name, p.status, p.priority, p.target_date, c.name as client
FROM projects p LEFT JOIN contacts c ON p.client_id = c.id
WHERE p.status NOT IN ('completed', 'cancelled')
ORDER BY
CASE p.priority WHEN 'urgent' THEN 1 WHEN 'high' THEN 2 WHEN 'medium' THEN 3 ELSE 4 END,
p.updated_at DESC;
Include task counts per project:
SELECT project_id, status, COUNT(*) as count FROM tasks GROUP BY project_id, status;
INSERT INTO tasks (project_id, title, status, priority)
VALUES (?, ?, 'todo', ?);
INSERT INTO activity_log (entity_type, entity_id, action, details)
VALUES ('project', ?, 'task_added', json_object('task', ?));
Update specified fields, set updated_at = datetime('now'), log the change.
UPDATE tasks SET status = ?, updated_at = datetime('now'),
completed_at = CASE WHEN ? = 'done' THEN datetime('now') ELSE NULL END
WHERE id = ?;