From project
Project-first session management — activate, create, search projects in wiki/
How this skill is triggered — by the user, by Claude, or both
Slash command
/project:projectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Ogni sessione lavora su UN progetto.** All'avvio, l'utente dice il progetto.
Ogni sessione lavora su UN progetto. All'avvio, l'utente dice il progetto. Questo comando carica il contesto e attiva il progetto per la sessione.
Interpreta linguaggio naturale — nessun subcommand rigido.
/project nexum → attiva nexum
/project fammi vedere tutti → list
/project cosa sto facendo → info
/project cerca laravel → search
/project cooking come faccio il riso? → attiva + risponde
/project temp → usa YYYY-MM-temp
Ogni progetto è una cartella con index.md obbligatorio + file separati per approfondimenti.
In wiki/projects/.templates/:
app.md — app con codebase (backend, frontend, DB). Include Design System + Do/Don'ts UI.website.md — CMS, static site. Include domini, plugin, email.business.md — relazione cliente, preventivi, fatture.personal.md — hobby, tracking, note.index.md = sommario esecutivo RAG-friendly (<500 token):
File separati = approfondimenti on-demand:
preventivo-xyz.md, tech-stack.md, storia-decisioni.mdYYYY-MM-DD-evento.md — eventi datati (deploy, incident, decisioni)| Cosa | Dove va | Dove NON va |
|---|---|---|
| Info strutturali (stack, accesso, domini) | index.md sezioni fisse | — |
| Stato attuale | index.md — UNA riga, si SOSTITUISCE | Non appendere timeline |
| Eventi datati (crisi, deploy, decisioni) | diary/YYYY/ con tag progetto | NON in index.md |
| Issue tracking, changelog | {progetto}/issues.md o {progetto}/log.md | NON in index.md |
| Do/Don'ts | index.md — regole permanenti | NON note operative temporanee |
| Dettagli preventivi/budget | {progetto}/preventivo-*.md | Solo riferimento in index |
Regola chiave: Stato attuale = foto, non diario. Do/Don'ts = regole permanenti, non TODO.
args = "$ARGUMENTS".strip()
args_lower = args.lower()
if args_lower == "temp":
intent = "temp"
elif any(w in args_lower for w in ["list", "mostra", "tutti", "fammi vedere", "elenco"]):
intent = "list"
elif any(w in args_lower for w in ["attivo", "corrente", "cosa", "status", "info"]):
intent = "info"
elif any(w in args_lower for w in ["cerca", "trova", "search"]):
intent = "search"
elif any(w in args_lower for w in ["analizza", "scan", "profondo"]):
intent = "scan"
else:
parts = args.split(maxsplit=1)
intent = "activate"
project_name = parts[0].lower().replace(" ", "-")
follow_up_question = parts[1] if len(parts) > 1 else None
import glob
from pathlib import Path
project_name = "$ARGUMENTS".strip().split()[0].lower().replace(" ", "-")
# temp shortcut
if project_name == "temp":
from datetime import datetime
project_name = datetime.now().strftime("%Y-%m") + "-temp"
project_file = Path(f"wiki/projects/{project_name}/index.md")
# Fuzzy matching se non esiste esatto
if not project_file.exists():
norm = lambda s: ''.join(c for c in s if c.isalnum()).lower()
matches = [
(p, Path(p).parent.name)
for p in glob.glob("wiki/projects/*/index.md")
if norm(project_name) in norm(Path(p).parent.name)
or norm(Path(p).parent.name) in norm(project_name)
]
if len(matches) == 1:
project_file = Path(matches[0][0])
project_name = matches[0][1]
elif len(matches) > 1:
# Mostra lista, chiedi di essere più specifico
pass
📂 **Progetto attivo: {nome}**
{primo paragrafo del progetto}
**Do:** ...
**Don'ts:** ...
**Stato attuale:** {sezione stato o "Nessuno stato precedente"}
**TODO aperti:** N
**Ultimi log:** ...
🎯 Pronto. Log e TODO di questa sessione → tag: {nome}
Intervista conversazionale:
wiki/projects/{nome}/index.md dal template giustoSe la skill tmux è installata, all'attivazione:
# Rinomina pane corrente
~/.tmux/set-pane-title.sh "EMOJI {nome_progetto} / {topic}"
# Rinomina window e salva mapping
CURRENT_WIN=$(tmux display-message -p '#{window_index}')
PREV=$(cat ~/.tmux/window-projects/$CURRENT_WIN 2>/dev/null || echo "")
echo "{nome_progetto}" > ~/.tmux/window-projects/$CURRENT_WIN
tmux rename-window "EMOJI {nome_progetto}"
Se la window era di un altro progetto → avvisa l'utente.
Se disponibile un subagent session-logger, lancialo in background:
subagent_type: session-logger
prompt: "Sessione iniziata per progetto {nome}. Logga checkpoint ogni ~15 messaggi."
run_in_background: true
model: haiku (o il modello più leggero disponibile)
npx claudepluginhub giobi/claude-skills --plugin projectMulti-project Manus-style planning with coordinator pattern. Supports project switching, separate planning/source paths, and cross-machine sync via git. Creates task_plan.md, findings.md, and progress.md.
Creates, opens, and manages project workspaces in LiveDocs for cross-session memory, long-term tracking like diets or investments, and saving key outputs.
Manages TwinMind project lifecycle: create, pause, resume, complete, archive; handles scoped actions/tasks, progress logging, card linking in PARA folder structure with vault-index.json.