From project
Project-first session management β activate, create, search projects in wiki/
npx claudepluginhub giobi/claude-skills --plugin projectThis skill uses the workspace's default tool permissions.
**Ogni sessione lavora su UN progetto.** All'avvio, l'utente dice il progetto.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Retrieves current documentation, API references, and code examples for libraries, frameworks, SDKs, CLIs, and services via Context7 CLI. Ideal for API syntax, configs, migrations, and setup queries.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
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)