Sistec · adozione IA · proposta finale d'infrastruttura

Infrastruttura di condivisione

Sintesi operativa e decisione d'infrastruttura: due fonti di verità indipendenti — la wiki-LLM su SharePoint/OneDrive per i fatti e il marketplace di plugin su GitHub per le competenze — configurate una volta a livello utente (~/.claude) e valide su ogni progetto. Il repository resta solo codice più graphify; il metodo di lavoro con Claude Code chiude il ciclo riportando nella wiki ciò che il lavoro sul repo produce.

2 fonti di verità · wiki + marketplace zero infrastruttura custom graphify · per-progetto 2026-08-13
Autore
Marco Manfrin · HMI, Sistec · Developer
Versione
1.2 · indice di revisione, incrementato a ogni revisione
Ultima revisione
2026-08-13 · revisionato da Marco Manfrin @Sistec

Documenti a monte

Questo documento è la sintesi decisionale che chiude la serie. Approfondimenti dedicati:

Qui non si ripete l'analisi: si fissa l'infrastruttura concreta — cosa vive dove, chi è fonte di verità di cosa, e il metodo di lavoro quotidiano con Claude Code.

§1

Due fonti di verità, indipendenti

L'infrastruttura si regge su due fonti di verità separate, ciascuna proprietaria di un tipo di contenuto diverso. Non si sovrappongono e non richiedono un orchestratore comune.

sistec-wiki (fatti)sistec plugin marketplace (competenze)
Fonte di verità diconoscenza aziendale: decisioni, progetti, analisi, documentiskill installate su ogni ~/.claude
Dove viveSharePoint — libreria SistecAM-AIStackrepository GitHub
Come si propagasync automatica del client OneDrive su ogni PCinstallazione esplicita dal marketplace
Cosa contienetesto, email, schemi elettrici, disegni meccanici, verbali, analisicodice + istruzioni (SKILL.md)
Versionamentocronologia file OneDrive + log.md append-onlygit, PR su main protetto
Accesso da Claude Codelettura diretta, autorizzata una volta in settings.json, + ricerca qmd su indice locale (§2.4)skill già installate in ~/.claude/skills/

Il principio

Ogni contenuto ha una sola casa: un comportamento/procedura è una skill (marketplace, GitHub); un fatto/decisione/documento è nella wiki che funge da second brain aziendale (SharePoint/OneDrive). Nessun contenuto vive in due posti contemporaneamente, quindi non c'è nulla da tenere sincronizzato tra le due fonti.

§2

Livello utente — ~/.claude, una volta per PC

Le due fonti di verità si attivano a livello utente: due modifiche, fatte una volta su ogni PC, valide per qualunque progetto l'operatore apra dopo.

2.1 settings.json — autorizzare la lettura della wiki

La cartella della wiki sincronizzata è fuori dal repository: senza un'autorizzazione esplicita, Claude Code chiederebbe conferma ad ogni lettura. Si risolve con un allow permanente nel settings.json utente (C:\Users\<utente>\.claude\settings.json):

{
  "permissions": {
    "allow": [
      "Read(C:\\Users\\Sistec 32\\Sistec srl\\Sistec AM-AI Stack - sistec-wiki\\**)",
      "Bash(qmd:*)"
    ]
  }
}

Il percorso è quello locale della sync SharePoint/OneDrive — dipende dall'account Windows, quindi va scritto nel settings.json personale, non in quello di progetto. La seconda riga autorizza il motore di ricerca della wiki (§2.4): senza, ogni singola ricerca chiede conferma — lo stesso attrito che la prima riga elimina sulla lettura dei file.

2.2 CLAUDE.md — un paragrafo, non una skill

Perché Claude Code consulti la wiki senza doverlo ricordare a ogni sessione, basta un rimando nel CLAUDE.md utente. Un paragrafo, non una skill: la procedura di ingest/query/lint è già scritta nel CLAUDE.md della wiki stessa, qui basta indicare dove trovarla.

In "C:\Users\Sistec 32\Sistec srl\Sistec AM-AI Stack - sistec-wiki" è presente una LLM wiki aziendale
(fatti, decisioni, documenti). Consultala seguendo le regole nel suo CLAUDE.md per ottenere contesto sui
progetti a cui stai lavorando, prima di chiedere all'operatore.

2.3 skills/ — installate dal marketplace

Le skill installate dal sistec plugin marketplace (GitHub) vivono in ~/.claude/skills/ (o registrate come plugin). Stessa logica: installazione una tantum per PC, disponibili in ogni progetto senza configurazione per-repo.

2.4 qmd — l'indice di ricerca, locale e non sincronizzato

La wiki non si consulta leggendo le cartelle a tentoni: il suo CLAUDE.md prescrive qmd per ogni ricerca — BM25 su parole chiave, ricerca vettoriale semantica, reranking. qmd lavora su un indice SQLite più i modelli di embedding, e né l'uno né gli altri vivono nella cartella sincronizzata:

CosaDovePerché lì
indice~\.cache\qmd\index.sqlitepercorso default di qmd — nessuna variabile d'ambiente da impostare
modelli~\.cache\qmd\models\~1,6 GB di GGUF (embedding + reranker): mai su SharePoint
collection~\.config\qmd\index.ymlcontiene il path assoluto del vault, che include il nome account Windows → macchina-specifico

Setup una tantum per PC, dopo che la cartella wiki è sincronizzata:

npm i -g @tobilu/qmd
cd "C:\Users\<utente>\Sistec srl\Sistec AM-AI Stack - sistec-wiki"
qmd collection add wiki/ --name wiki
qmd update && qmd embed

Il primo embed scarica i modelli (~1,6 GB): su rete aziendale non è istantaneo. Da lì in poi tutti i comandi sono nudi — qmd search "..." — senza INDEX_PATH né altre variabili.

L'indice non si propaga — e non deve

Le pagine della wiki arrivano su ogni PC da sole, via sync SharePoint. L'indice no. È un artefatto derivato: si ricostruisce in locale con qmd update && qmd embed, quindi non va sincronizzato, non va copiato tra PC e non va messo nei backup. Ogni operatore indicizza le stesse pagine per conto proprio — è la condizione che tiene un database SQLite fuori da una cartella con scritture concorrenti (§4).

Perché a livello utente e non di progetto

Il percorso della wiki sincronizzata dipende dall'account Windows e cambia da PC a PC. Metterlo nel CLAUDE.md/settings.json utente — non versionato in nessun repo — evita di duplicare, o sbagliare, un path macchina-specifico in ogni repository. Vale identico per il path: della collection in index.yml: se la cartella wiki viene spostata o ri-sincronizzata, va corretto lì prima del successivo qmd update — altrimenti qmd non trova più nessun file e svuota l'indice.

§3

Livello progetto — il repository resta solo codice

Claude Code viene eseguito nella cartella del repository, com'è pensato dalla documentazione ufficiale Anthropic. Dentro quella cartella non c'è nulla di condiviso tra progetti — niente skill, niente conoscenza aziendale: solo ciò che è specifico di questo repo.

La separazione netta

Competenza → marketplace (GitHub) → ~/.claude. Conoscenza → wiki (SharePoint/OneDrive) → ~/.claude. Convenzioni di codice.claude/rules/ → dentro al repo, perché disciplinano solo quel codice. Struttura del codice → graphify → dentro al repo stesso, perché è specifica di quel repo. Quattro nature diverse, quattro canali diversi, nessuna sovrapposizione.

3.1 Eccezione: skill che devono vivere anche nel progetto

Non tutte le skill restano solo a livello utente. openspec è l'eccezione: opera su file che devono esistere dentro il repository (openspec/, openspec/changes/), quindi le sue skill (openspec-propose, openspec-apply-change, openspec-archive-change, ecc.) vanno installate anche in .claude/skills/ del progetto, non solo a livello utente. Stesso discorso per graphify: la skill è a livello utente, ma va inizializzata per-progetto (graphify-out/ nasce dentro il repo).

Guida passo-passo per inizializzare graphify e openspec su un nuovo progetto: «Iniziare un nuovo progetto con Claude Code» (OneNote, Claude AI).

§4

Cosa entra nella wiki, e come

La wiki non riceve solo testo: qualunque documento aziendale utile come fatto o conoscenza può finire in raw/ — email, schemi elettrici, disegni meccanici, verbali, oltre ai prodotti di analisi generati lavorando su un progetto.

4.1 Prodotti di analisi dal repository

openspec, l'output di graphify, e qualunque altro prodotto di analisi del repository sono fatti: la conoscenza che serve per ricostruire perché e come è stata presa una decisione. L'operatore li copia manualmente in raw/ della wiki e chiede l'ingest — non c'è sincronizzazione automatica tra repository e wiki.

Perché la copia resta manuale

Nessun hook o watcher sincronizza il repo con la wiki a ogni sessione: sarebbe rumore, non conoscenza. Il punto di frizione minimo — copia-incolla del file più il prompt «fai ingest» — è il meccanismo di controllo: l'umano decide cosa, tra i documenti del progetto, merita di diventare conoscenza aziendale condivisa.

Anche nel repo: si committano, non si ignorano

openspec/ e .claude/claude-archive/ vanno committati in git, non messi in .gitignore: la copia in raw/ della wiki (sopra) è un'aggiunta, non un trasferimento. Restando nel repo, quelle cartelle sono già fonte d'informazione lì dove serve — chi clona o apre il repo trova subito perché e come, senza dover prima passare dalla wiki.

4.2 Log e indice — generati, non scritti a mano

Durante l'ingest, la wiki produce da sola due file: log.md (registro cronologico append-only di ogni ingest/query/lint) e index.md (catalogo aggiornato di tutte le pagine). L'operatore non li mantiene: sono l'output dell'operazione di ingest definita nel CLAUDE.md della wiki.

4.3 Non solo testo

La cartella raw/ accetta qualunque formato: markdown, PDF, immagini di schemi elettrici o disegni meccanici, export di scambi email. L'ingest li legge (testo e immagini) e produce il riassunto in wiki/fonti/, aggiornando le pagine sintetiche toccate — la regola è la stessa qualunque sia il formato d'origine: nella wiki finisce il risultato dell'analisi, non il racconto di come si è arrivati lì.

Perché niente database né repo git nella cartella wiki

Regola generale: nella cartella wiki va solo testo. Nessun file binario a scrittura concorrente — né un repo git, né un database. OneDrive sincronizza file, non transazioni: non ha modo di sapere che due file vanno aggiornati insieme, o che uno è a metà scrittura. Due casi concreti, scartati per lo stesso motivo:

  • .git/ — oggetti e refs possono restare incoerenti se un commit è in corso su un PC mentre la sync scrive sugli stessi file da un altro: repo corrotto, non solo conflitto file. Fragile per un meccanismo pensato come rete di sicurezza.
  • indice qmd (index.sqlite, §2.4) — SQLite tiene sidecar WAL/journal accanto al database: se arrivano al sync in ordine diverso, l'indice è corrotto. In più Files On-Demand può disidratare il file, e qmd si trova ad aprire un placeholder da 0 byte. Su una libreria condivisa si aggiunge il resto: copie conflitto, e megabyte di binario ricaricati verso tutti i colleghi a ogni re-indicizzazione.

Nessuna delle due esclusioni costa qualcosa, perché in entrambi i casi il contenuto è ricostruibile: il versionamento resta cronologia file OneDrive + log.md append-only (§1, §4.2), e l'indice si rigenera con qmd update && qmd embed (§2.4).

§5

Metodo di lavoro con Claude Code

Il ciclo quotidiano di lavoro è quello descritto dalla documentazione ufficiale Anthropic: si lavora dentro la cartella del repository. A questo si aggiungono due meccanismi che chiudono il ciclo verso la wiki.

5.1 Hook claude-archive — il perché e il come, a fine modifica

Il plugin marketplace/hmi-developer include la skill/hook archive: a fine di una modifica al codice, scrive un riepilogo conciso — perché è stata fatta, come è stata fatta — in .claude/claude-archive/<data>-<slug>.md, dentro al repository. È esattamente ciò che serve sapere per ricostruire una decisione senza dover rileggere il diff: candidato naturale per la copia manuale in raw/ (§4.1).

5.2 Modifiche complesse — openspec direttamente in Claude Code

Per modifiche di maggiore portata si usa openspec direttamente dentro Claude Code (skill installate anche nel progetto, §3.1): prima di implementare, produce in openspec/changes/<nome>/ gli artefatti standard — proposal.md, specs/, design.md, tasks.md. Questi file sono prodotti di analisi a tutti gli effetti (§4.1): si copiano in raw/ e si indicizzano, cosicché la decisione progettuale sopravviva al repository in cui è nata.

In futuro

È prevista l'integrazione di un MCP server per Microsoft 365 per portare nella wiki, in modo meno manuale, ciò che oggi vive solo in Teams, OneNote e OneDrive. Il disegno completo è nel documento dedicato (sistec-wiki §8) — qui resta fuori scope: l'infrastruttura di questo documento funziona già senza.

§6

Diagramma dell'infrastruttura

Le due fonti di verità in alto, la configurazione a livello utente al centro, il repository in basso — con il metodo di lavoro che chiude il ciclo copiando i prodotti di analisi in raw/.

Fig 1Infrastruttura proposta: GitHub e SharePoint come fonti di verità, configurazione utente una tantum, repository solo codice + graphify, metodo di lavoro che riporta i prodotti di analisi nella wiki. La freccia wiki/ → qmd resta dentro il livello utente: le pagine si propagano via sync, l'indice di ricerca si ricostruisce su ogni PC (§2.4).
GitHub — sistec plugin marketplace fonte di verità delle competenze (skill) installazione esplicita su ogni PC SharePoint / OneDrive fonte di verità dei fatti — sistec-wiki sync automatica su ogni PC livello utente — una volta per PC settings.json ~\.claude · allow lettura wiki + Bash(qmd:*) CLAUDE.md ~\.claude · un paragrafo: come consultare la wiki skills/ ~\.claude · installate dal marketplace GitHub qmd — indice di ricerca ~\.config + ~\.cache · locale, mai sincronizzato sistec-wiki — SharePoint / OneDrive raw/ email · schemi elettrici · disegni meccanici openspec · graphify-out · altre analisi wiki/ — pagine canonicalizzate log.md + index.md generati automaticamente a ogni ingest autorizza lettura rimando (§2.2) indicizzazione locale (non passa dal sync) D:\dev\proj-a — repository, Claude Code eseguito qui codice niente skill, niente conoscenza extra graphify-out/ ricerche senza leggere il codice hook claude-archive marketplace/hmi-developer perché/come a fine modifica openspec modifiche complesse proposal/specs/design/tasks copia manuale operatore → raw/ skill disponibili qui consultata da Claude Code MS365 MCP (futuro) Teams · OneNote · OneDrive → raw/ (ingest automatico)
competenze (marketplace) fatti (wiki) configurazione utente mappa del codice / futuro repository (solo codice)
§7

Prossimi passi

CosaAzioneDipendenza
Wikicartella già sincronizzata via SharePoint (SistecAM-AIStack); ogni operatore aggiunge il rimando nel proprio CLAUDE.md utente e l'allow in settings.json (§2)nessuna — già disponibile
Marketplacerepository GitHub come unico canale d'installazione delle skill su ~/.claude — guida all'uso: OneNote HMIrepository esistente, criteri d'integrazione già definiti
Metodo di lavoroabilitare l'hook claude-archive (marketplace/hmi-developer) su tutti i progetti attivi; usare openspec direttamente in Claude Code per le modifiche complesse (§5)plugin hmi-developer installato, skill openspec installata (§3.1)
qmdsu ogni PC, dopo la sync della wiki: npm i -g @tobilu/qmd, registrare la collection e costruire l'indice con qmd update && qmd embed (§2.4); aggiungere Bash(qmd:*) all'allow (§2.1)cartella wiki sincronizzata; Node.js; ~1,6 GB per i modelli al primo embed
graphifyeseguire graphify update . nei repository di progetto attiviskill graphify installata
MS365 MCPfuori scope di questa proposta — disegno completo in sistec-wiki §8Fase 1-2 della roadmap wiki completate

Il costo di questa proposta

Zero infrastruttura nuova da costruire: SharePoint/OneDrive e GitHub esistono già e fanno da sé la sincronizzazione. Il lavoro è tutto di configurazione (due file per PC) e di disciplina operativa (copiare i prodotti di analisi in raw/, lanciare l'hook di archivio, usare openspec sulle modifiche complesse) — non di sviluppo software.

rev

Revisioni

VersioneDataRevisionato daModifiche introdotte
1.22026-08-13Marco Manfrin @Sistec Aggiunto qmd — il motore di ricerca della wiki, prima assente dal documento. Nuova §2.4: indice SQLite in ~\.cache\qmd\, collection in ~\.config\qmd\index.yml, setup per PC, comandi senza INDEX_PATH. §2.1: aggiunto Bash(qmd:*) all'allow, altrimenti ogni ricerca chiede conferma. §1: riga «Accesso da Claude Code» completata con la ricerca qmd. §4: la callout «niente repo git nella cartella wiki» generalizzata a niente database né repo git.git/ e index.sqlite falliscono per lo stesso motivo (binari a scrittura concorrente su cartella sync), entrambi ricostruibili. §6: quarto box nel riquadro utente + freccia wiki/ → qmd; il riquadro non si chiama più ~\.claude, perché qmd scrive in ~\.config e ~\.cache. §7: riga qmd nei prossimi passi.
1.12026-08-06Marco Manfrin @Sistec Scartata l'idea di repo git nella cartella wiki. §4.4 rimossa: versionare la wiki con un repository git dentro la cartella sincronizzata OneDrive è fragile — rischio di oggetti/refs git corrotti se la sync scrive durante un commit da un altro PC. Versionamento resta cronologia file OneDrive + log.md (§1, §4.2). Rimossa anche la riga corrispondente in §7 (prossimi passi) e il rimando in tabella §1.
1.02026-08-06Marco Manfrin @Sistec Emissione iniziale. Sintesi decisionale dell'infrastruttura: due fonti di verità (wiki SharePoint/OneDrive, marketplace GitHub), configurazione a livello utente, repository solo codice + graphify, metodo di lavoro con hook claude-archive e openspec.