Manage work sessions with creation, loading, syncing, and archiving capabilities.
Manages work sessions with creation, loading, syncing, and archiving capabilities for organized project development.
/plugin marketplace add https://www.claudepluginhub.com/api/plugins/yuvasee-samocode/marketplace.json/plugin install yuvasee-samocode@cpd-yuvasee-samocodeThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Manages work sessions. Session paths must be explicitly provided or known from context.
IMPORTANT: Sessions do NOT have a default location. The session path must be:
start ~/projects/my-project/_sessions/session-name).samocode file under SESSIONS pathIf session path cannot be determined: STOP and ask the user for the session location.
Finding .samocode: Look in current working directory (where Claude was started). Never guess paths - if .samocode not found, ask user.
IMPORTANT: All git operations (fetch, branch creation, worktree management) MUST run from the correct repository directory.
.samocode from CWD — use MAIN_REPO value as the repo directory for all git commands.samocode not found or MAIN_REPO not set: fall back to git rev-parse --show-toplevel from CWDUse $ARGUMENTS to specify action and parameters:
start [session-path/name] - Create new sessioncontinue [session-name-pattern] - Load existing sessionsync - Sync current conversation to active sessionarchive [session-name-pattern] - Archive a sessionCreate a new work session.
Resolve session location:
.samocode from current working directory, use SESSIONS path.samocode not found: STOP and ask user - never guess or create arbitrary foldersParse session name:
Create session folder:
[SESSIONS_DIR]/[YY-MM-DD]-[session-name]/ (use current date for folder name)Create worktree (if .samocode has WORKTREES):
Read MAIN_REPO and WORKTREES from .samocode. If both are set, create a worktree:
# Derive branch name: strip date prefix from session folder name
# e.g., "26-02-05-my-feature" -> "my-feature"
BRANCH_NAME=[session-name] # the name before date-prefixing
# If GIT_BRANCH_PREFIX env var is set, prepend it: [prefix]/[branch-name]
# Fetch and detect default branch
cd [MAIN_REPO]
git fetch origin
DEFAULT_BRANCH=$(git remote show origin | grep 'HEAD branch' | cut -d: -f2 | xargs)
# Create worktree from remote default branch
git worktree add -b [BRANCH_NAME] [WORKTREES]/[YY-MM-DD]-[session-name] origin/$DEFAULT_BRANCH
If worktree creation fails (branch already exists), try attaching to existing branch:
git worktree add [WORKTREES]/[YY-MM-DD]-[session-name] [BRANCH_NAME]
Working Dir = [WORKTREES]/[YY-MM-DD]-[session-name]
If WORKTREES not set (non-repo project): fall back to MAIN_REPO, or git rev-parse --show-toplevel, or current directory.
Create _overview.md:
# Session: [session-name]
Started: [TIMESTAMP_LOG]
Working Dir: [worktree-path or fallback]
## Status
Phase: investigation
Iteration: 1
Blocked: no
Last Action: Session created
Next: Ready to work
## Flow Log
- [TIMESTAMP_ITERATION] Session created
## Files
(none yet)
## Plans
(none yet)
## Linear Tasks
(none yet)
Commit (if sessions dir is a git repo):
cd [SESSIONS_DIR] && git add . && git commit -m "Start session: [session-name]"Confirm to user:
Session created: [YY-MM-DD]-[session-name]
Path: [full-path]
Working Dir: [worktree-path or fallback]
Branch: [BRANCH_NAME]
IMPORTANT: This is now your active session. Remember this path for subsequent commands.
Ready to work. Use /dive, /task, or /create-plan to continue.
IMPORTANT: After creating the session, keep the session path in your working memory for all subsequent session-aware commands.
Load and continue working in an existing session.
Resolve session location:
.samocode file for SESSIONS pathFind matching sessions:
*$ARGUMENTS* (exclude _archive/)Handle results:
Load session:
_overview.md from the session folder- [TIMESTAMP_ITERATION] Session resumedgit add . && git commit -m "Resume session: [session-name]"Present summary:
Session: [session-name]
Path: [full-path]
Working Dir: [from _overview.md]
Started: [date]
Recent Activity:
[Last 5-10 Flow Log entries]
Files: [count]
[List with brief descriptions]
Plans: [list if any]
Linear Tasks: [list if any]
---
Session loaded. Ready to continue.
IMPORTANT: After loading, keep the session path in your working memory for all subsequent session-aware commands.
Ensure all work from this conversation is recorded in the active session.
Check for active session:
Read current session state:
[SESSION_PATH]/_overview.mdReview conversation for unrecorded work:
Update _overview.md:
Create detail files if warranted:
Commit (if git repo):
cd [SESSION_DIR] && git add . && git commit -m "Sync session: [session-name]"Extract learnings:
Report:
Archive a session (full) or archive work within a session (partial).
archive - Archive entire active session (moves folder to _archive/)archive [session-name] - Archive entire named sessionarchive keep file1.md file2.md - Archive work files within session, keep specified filesarchive [session-path] keep file1.md - Archive work in specific session, keep filesIf arguments after "archive" are empty:
If arguments provided (no "keep"):
*$ARGUMENTS* (exclude _archive/)Get session info:
[SESSION_PATH]/_overview.mdCreate archive folder if needed:
mkdir -p [SESSIONS_DIR]/_archive
Remove worktree (if applicable):
/worktrees/:
MAIN_REPO from .samocode (see "Repository Resolution" section)MAIN_REPO directory:
cd "$MAIN_REPO" && git worktree remove [working_dir_path]
Move session folder:
mv [SESSION_PATH] [SESSIONS_DIR]/_archive/
Commit changes (if git repo):
cd [SESSIONS_DIR] && git add . && git commit -m "Archive session: [session-name]"Clear active session (if archiving active session):
Extract learnings:
Confirm to user:
Session archived: [session-name]
Moved to: [archive-path]
Worktree removed: [path] (branch preserved)
Session closed.
Archives completed work within a session while keeping important deliverables accessible.
Example: archive keep competitor-analysis.md → archive active session, keep competitor-analysis.md
Resolve session:
Get timestamp and slug:
TIMESTAMP_FOLDER=$(date '+%y-%m-%d')
[SESSION_PATH]/_archive/[YY-MM-DD]-[slug]/Create archive subfolder:
mkdir -p [SESSION_PATH]/_archive/[YY-MM-DD]-[slug]
Identify files to archive:
.md files in session root EXCEPT:
_overview.md (always kept - session state)_qa.md (always kept if exists)_signal.json (always kept)[MM-DD-HH:mm]-*.md)Move files to archive:
for file in [files_to_archive]; do
mv "$file" [SESSION_PATH]/_archive/[YY-MM-DD]-[slug]/
done
Update _overview.md:
- [TIMESTAMP_LOG] Archived work to _archive/[YY-MM-DD]-[slug]/, kept: [kept_files]Extract learnings:
Report to user:
Work archived within session.
Archived to: [SESSION_PATH]/_archive/[YY-MM-DD]-[slug]/
Files moved: [count] files
Kept in place: [kept_files]
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.