@mcptoolshop/housekeeping 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.es.md +113 -70
- package/README.fr.md +145 -65
- package/README.hi.md +125 -65
- package/README.it.md +126 -65
- package/README.ja.md +111 -70
- package/README.md +89 -23
- package/README.pt-BR.md +144 -76
- package/README.zh.md +130 -66
- package/housekeeping.config.example.json +2 -1
- package/package.json +1 -1
- package/rules/atlas-map.md +6 -1
- package/rules/github-actions.md +7 -3
- package/src/analyze.mjs +148 -41
- package/src/collect.mjs +5 -2
- package/src/config.mjs +13 -4
- package/src/load.mjs +7 -3
- package/src/report.mjs +13 -9
- package/src/schema.sql +9 -1
- package/src/workflow-risks.mjs +125 -0
package/README.it.md
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
An operational-health warehouse for a GitHub organization.<br>
|
|
13
|
-
One sweep, one SQLite database, findings you can argue with
|
|
13
|
+
One sweep, one SQLite database, findings you can argue with,<br>
|
|
14
|
+
and the whole-organization view an AI agent needs to coordinate every repository.
|
|
14
15
|
</p>
|
|
15
16
|
|
|
16
17
|
<p align="center">
|
|
@@ -20,39 +21,100 @@
|
|
|
20
21
|
<a href="https://mcp-tool-shop-org.github.io/housekeeping/handbook/"><img src="https://img.shields.io/badge/Handbook-read-blue" alt="Handbook" /></a>
|
|
21
22
|
</p>
|
|
22
23
|
|
|
23
|
-
Un
|
|
24
|
+
Un'unica scansione raccoglie lo stato del CI di ogni repository, le issue aperte e le richieste di pull, le release, i tag di versione, i file di workflow, la protezione dei branch, gli avvisi di sicurezza, i file di blocco e i dati di fatturazione di Actions in SQLite, quindi esegue un controllo completo rispetto alle regole definite.
|
|
24
25
|
|
|
25
26
|
Fornisce risposte, per l'intera organizzazione contemporaneamente:
|
|
26
27
|
|
|
27
|
-
- Quali
|
|
28
|
-
- Quali richieste di pull non possono essere unite, perché un controllo richiesto che non produce alcun risultato le sta bloccando?
|
|
29
|
-
- Quali distribuzioni vengono rifiutate dalle impostazioni del repository
|
|
30
|
-
- Dove
|
|
28
|
+
- Quali branch predefiniti sono contrassegnati come problematici e si tratta di una branch principale interrotta o di una cronologia obsoleta?
|
|
29
|
+
- Quali richieste di pull non possono mai essere unite, perché un controllo richiesto che non produce alcun risultato le sta bloccando?
|
|
30
|
+
- Quali distribuzioni vengono rifiutate dalle impostazioni del repository?
|
|
31
|
+
- Dove `package.json`, i tag Git e il registro npm si sono discostati?
|
|
31
32
|
- Quali workflow violano le regole sui costi di Actions, quanto sono costati e quali job hanno consumato tali costi?
|
|
32
33
|
- Quali repository contengono avvisi che il sistema di avvisi di GitHub non rileva?
|
|
33
34
|
|
|
34
35
|
È uno strumento di audit, non uno strumento di correzione. Legge i dati di GitHub e non apporta alcuna modifica.
|
|
35
36
|
|
|
36
|
-
##
|
|
37
|
+
## Un agente per ogni repository
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
Un'organizzazione con dozzine di repository non dispone di un unico punto in cui sono memorizzati i suoi dati. housekeeping è questo punto, e il suo server MCP, `hk-mcp`, li fornisce a un agente AI. Grazie a questo, un singolo agente può fungere da coordinatore per l'intera organizzazione:
|
|
40
|
+
|
|
41
|
+
1. **Scansione.** `hk refresh` esegue una singola scansione di ogni repository.
|
|
42
|
+
2. **Smistamento.** L'agente chiede quali elementi sono contrassegnati come problematici, quali sono bloccati e quali sono peggiorati, e riceve risposte che già distinguono una branch principale interrotta da una cronologia obsoleta e una richiesta di pull bloccata da una in conflitto.
|
|
43
|
+
3. **Pianificazione di un'azione.** Una singola query `hk_sql` individua tutti i repository con la stessa struttura, in modo che la correzione diventi una singola richiesta di pull per repository anziché una ricerca.
|
|
44
|
+
4. **Esecuzione del lavoro.** housekeeping non scrive mai. L'agente apre le richieste di pull con i propri strumenti, con le proprie autorizzazioni e previa approvazione.
|
|
45
|
+
5. **Verifica.** Esegue una nuova scansione. L'errore è stato risolto o meno, e la differenza tra due scansioni è una query.
|
|
46
|
+
|
|
47
|
+
Domande a cui un agente risponde in una o due chiamate:
|
|
48
|
+
|
|
49
|
+
- Quali branch predefiniti sono contrassegnati come problematici e quale job e quale passaggio hanno causato il problema?
|
|
50
|
+
- Quali richieste di pull non possono mai essere unite e il problema è dovuto al trigger o a un conflitto?
|
|
51
|
+
- Quali repository contengono un avviso di produzione per il quale GitHub non mostra alcun avviso?
|
|
52
|
+
- Quali workflow pianificati violano le regole per le pianificazioni e in che modo?
|
|
53
|
+
- Quanto sono costati Actions e quale job ha consumato tali costi?
|
|
54
|
+
- Cosa è cambiato dall'ultima scansione?
|
|
55
|
+
|
|
56
|
+
| Strumento | A cosa risponde |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `hk_summary` | Totali per la scansione più recente: repository, issue, richieste di pull, workflow, risultati. |
|
|
59
|
+
| `hk_findings` | Risultati per codice, gravità, categoria o repository; conteggi per codice quando non filtrati. Il risultato di una branch principale contrassegnata come problematica indica il job e il passaggio che hanno causato il problema. |
|
|
60
|
+
| `hk_ci` | Repository la cui branch predefinita è contrassegnata come problematica e i workflow che hanno fallito; anche le pianificazioni non riuscite, le branch delle richieste di pull non riuscite e i repository senza CI. |
|
|
61
|
+
| `hk_repo` | Un singolo repository nel dettaglio: risultati, workflow, richieste di pull e issue aperte. |
|
|
62
|
+
| `hk_backlog` | Richieste di pull o issue aperte in tutta l'organizzazione, ordinate dalla più vecchia alla più recente. |
|
|
63
|
+
| `hk_health` | Un punteggio di salute per repository, ordinato dal peggiore al migliore. |
|
|
64
|
+
| `hk_cost` | Spese di Actions per repository, workflow o job, separate in costi lordi e netti. |
|
|
65
|
+
| `hk_sql` | Una singola istruzione `SELECT` o `WITH` in sola lettura rispetto al data warehouse. |
|
|
66
|
+
| `hk_schema` | Le tabelle e le colonne, per scrivere query `hk_sql`. |
|
|
67
|
+
|
|
68
|
+
Ogni risposta proviene dalla scansione più recente, aperta in sola lettura. Una chiamata non riuscita restituisce un errore strutturato, mai una traccia dello stack.
|
|
69
|
+
|
|
70
|
+
### Come connetterlo
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
|
|
76
|
+
"atlas": { "command": "atlas", "args": ["mcp"] }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`HK_HOME` è la directory da cui si esegue la scansione. Da una copia clonata, utilizzare `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`. Il secondo server è [Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas), che risponde allo stesso agente su un singolo repository alla volta (vedere di seguito). Su Windows, avviare un comando installato a livello globale tramite `cmd /c`.
|
|
82
|
+
|
|
83
|
+
## housekeeping e Atlas
|
|
84
|
+
|
|
85
|
+
[Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) (`@dogfood-lab/atlas`) mappa un singolo repository: le sue parti e le sue "porte", ovvero ogni workflow con ciò che esegue, pubblica e distribuisce. La mappa viene salvata come `atlas/` e verificata nel CI. housekeeping è la vista dell'organizzazione. I due strumenti sono progettati per funzionare insieme.
|
|
86
|
+
|
|
87
|
+
- **Ogni mappa, sottoposta a scansione.** Una scansione legge la mappa salvata di ciascun repository insieme a tutti gli altri dati e segnala quali repository non ne hanno, quali non eseguono mai `atlas check` e quali contengono un motore diverso da quello utilizzato dal resto dell'organizzazione.
|
|
88
|
+
- **Dove un'esecuzione contrassegnata come problematica ha causato un errore.** Quando una branch predefinita è contrassegnata come problematica, il risultato indica il job e il passaggio che hanno causato l'errore e, tramite la mappa, il comando che quel passaggio esegue, in modo che la correzione inizi nel file corretto.
|
|
89
|
+
- **Informazioni sulla distribuzione dalla mappa.** L'ambiente in cui un job distribuisce è tratto dalla mappa in cui è registrato, in modo che entrambi gli strumenti leggano un workflow nello stesso modo.
|
|
90
|
+
- **Avvisi in tutta l'organizzazione.** Atlas segnala un passaggio del workflow che causerà un errore prima che venga eseguito, ad esempio uno strumento che richiede una versione di runtime più recente di quella installata dal job. Il report elenca questi elementi per tutti i repository contemporaneamente.
|
|
91
|
+
|
|
92
|
+
Un agente che utilizza entrambi i server passa da "questi dodici repository sono bloccati" (housekeeping) a "questo è il workflow, il job e i file che una modifica raggiungerà" (Atlas), senza dover aprire ogni repository manualmente.
|
|
93
|
+
|
|
94
|
+
## Perché ha questa struttura
|
|
95
|
+
|
|
96
|
+
| Livello | Scelta | Motivo |
|
|
39
97
|
|---|---|---|
|
|
40
|
-
| Trasporto | L'interfaccia a riga di comando `gh` |
|
|
41
|
-
| Raccolta | GitHub GraphQL,
|
|
98
|
+
| Trasporto | L'interfaccia a riga di comando `gh` | Già contiene il token. Lo strumento non memorizza né richiede mai una credenziale. |
|
|
99
|
+
| Raccolta | GitHub GraphQL, a pagine | Una singola query restituisce metadati, issue aperte, richieste di pull aperte, release e alberi di file per una pagina di repository. Una pagina che continua a superare il timeout viene dimezzata e richiesta nuovamente dallo stesso cursore. |
|
|
42
100
|
| Esecuzioni di Actions | REST | GraphQL non dispone di un'interfaccia per Actions. |
|
|
43
|
-
|
|
|
44
|
-
| Tariffe
|
|
45
|
-
| Archiviazione | SQLite tramite
|
|
46
|
-
| Fonte di
|
|
47
|
-
|
|
|
101
|
+
| Le azioni comportano un costo. | API di fatturazione più durata per ogni attività. | Nella fattura è indicato il repository; solo nelle attività è indicato il workflow. Gli endpoint `/timing` di GitHub restituiscono zeri, quindi il totale per ogni attività viene ricostruito e quindi riconciliato con la fattura. |
|
|
102
|
+
| Tariffe per i runner. | Letto dalla fattura. | Una tariffa fatturata può differire dal prezzo di listino e una costante nel codice sorgente falsificherebbe ogni numero. |
|
|
103
|
+
| Archiviazione. | SQLite tramite il `node:sqlite` integrato. | Nessuna fase di compilazione nativa. |
|
|
104
|
+
| Fonte di verità. | `data/snapshots/*.json` | Dati grezzi, modificabili e con possibilità di aggiungere solo dati. Il database viene derivato: `npm run rebuild` lo ricostruisce offline. |
|
|
105
|
+
| Registro delle scansioni. | `data/sweeps.jsonl` | Una riga per ogni scansione, comprese le scansioni non riuscite e le scansioni che non hanno trovato nulla di nuovo. |
|
|
48
106
|
|
|
49
107
|
Gli snapshot sono immutabili e additivi, quindi la differenza tra due date è un `JOIN`.
|
|
50
108
|
|
|
51
109
|
## Requisiti
|
|
52
110
|
|
|
53
111
|
- Node.js 22.5 o successivo.
|
|
54
|
-
-
|
|
55
|
-
|
|
112
|
+
- [GitHub CLI](https://cli.github.com/), con accesso effettuato (`gh auth status`) con un
|
|
113
|
+
account che può leggere l'organizzazione. Per leggere le fatture e gli avvisi di sicurezza
|
|
114
|
+
sono necessari i permessi corrispondenti; in caso contrario, la scansione registra "non misurato" e
|
|
115
|
+
prosegue. Non registra mai un permesso mancante come risultato valido.
|
|
116
|
+
- Windows o Linux. È sviluppato su Windows e i suoi test vengono eseguiti su Linux in
|
|
117
|
+
CI. macOS dovrebbe funzionare e non è testato.
|
|
56
118
|
|
|
57
119
|
## Utilizzo
|
|
58
120
|
|
|
@@ -62,9 +124,10 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
|
|
|
62
124
|
hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
|
|
63
125
|
```
|
|
64
126
|
|
|
65
|
-
Per
|
|
127
|
+
Per mantenere le impostazioni tra le scansioni, inserire un `housekeeping.config.json` in quella
|
|
128
|
+
directory (vedere Configurazione); quindi `hk refresh` non richiede alcun argomento.
|
|
66
129
|
|
|
67
|
-
Oppure eseguirlo da una copia, che
|
|
130
|
+
Oppure eseguirlo da una copia, che mantiene i suoi dati nella copia:
|
|
68
131
|
|
|
69
132
|
```bash
|
|
70
133
|
git clone https://github.com/mcp-tool-shop-org/housekeeping.git
|
|
@@ -75,7 +138,7 @@ cp housekeeping.config.example.json housekeeping.config.json # then set "org"
|
|
|
75
138
|
hk refresh
|
|
76
139
|
```
|
|
77
140
|
|
|
78
|
-
Quindi,
|
|
141
|
+
Quindi, eseguite una query:
|
|
79
142
|
|
|
80
143
|
```bash
|
|
81
144
|
hk summary # portfolio totals
|
|
@@ -91,13 +154,15 @@ hk sql "SELECT ..." # one read-only statement
|
|
|
91
154
|
hk help # every command and flag
|
|
92
155
|
```
|
|
93
156
|
|
|
94
|
-
In una copia senza
|
|
157
|
+
In una copia senza `npm link`, ogni `hk <command>` è `node src/cli.mjs <command>`.
|
|
95
158
|
|
|
96
|
-
`npm run rebuild`
|
|
159
|
+
`npm run rebuild` deriva nuovamente il database e il report dagli snapshot già
|
|
160
|
+
presenti sul disco, senza accesso alla rete.
|
|
97
161
|
|
|
98
162
|
Una scansione completa effettua alcune centinaia di chiamate API. Non eseguire `refresh` in un ciclo.
|
|
99
163
|
|
|
100
|
-
I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'output
|
|
164
|
+
I risultati vengono inviati all'output standard; i progressi e gli errori vengono inviati all'output degli errori standard. Ogni
|
|
165
|
+
errore stampa un codice e un suggerimento. Codici di uscita: 0 ok, 1 errore utente, 2 errore di runtime, 3 parziale (la scansione è terminata, con delle lacune).
|
|
101
166
|
|
|
102
167
|
## Configurazione
|
|
103
168
|
|
|
@@ -110,60 +175,56 @@ I risultati vengono inviati all'output standard; i progressi e gli errori vengon
|
|
|
110
175
|
}
|
|
111
176
|
```
|
|
112
177
|
|
|
113
|
-
- `org` è l'organizzazione da
|
|
114
|
-
- `metaRepos` sono i repository che contengono le impostazioni predefinite dell'organizzazione, le risorse o
|
|
178
|
+
- `org` è l'organizzazione da scansionare. `hk refresh <org>` lo sovrascrive. In caso contrario, una scansione si rifiuta di avviarsi.
|
|
179
|
+
- `metaRepos` sono i repository che contengono le impostazioni predefinite dell'organizzazione, le risorse o
|
|
180
|
+
gli strumenti, non un prodotto distribuito. Sono esenti dai risultati che hanno senso solo per un prodotto: mancanza di README, LICENSE e file simili, assenza di workflow e assenza di release.
|
|
115
181
|
|
|
116
182
|
Un file non valido è un errore, mai un valore predefinito silenzioso: una chiave sconosciuta, un tipo errato o un JSON non valido interrompono l'esecuzione.
|
|
117
183
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## Mantieni i dati privati
|
|
123
|
-
|
|
124
|
-
**I dati scritti da una scansione sono sensibili. Non inserire `data/` o `reports/` in un repository pubblico.**
|
|
125
|
-
|
|
126
|
-
Uno snapshot registra i nomi e le descrizioni dei repository privati, ogni avviso di sicurezza aperto con il pacchetto a cui si riferisce, i file di workflow e i dati di fatturazione di Actions. GitHub nasconde deliberatamente gli avvisi di sicurezza di un repository pubblico a tutti tranne che ai suoi manutentori; uno snapshot pubblicato fornirebbe tale elenco.
|
|
184
|
+
Eseguito da una copia, housekeeping mantiene `data/`, `reports/` e il file di configurazione
|
|
185
|
+
nella copia. Eseguito come pacchetto installato, li mantiene nella directory da cui
|
|
186
|
+
lo si esegue o in `HK_HOME` quando è impostato.
|
|
127
187
|
|
|
128
|
-
|
|
188
|
+
Ambiente: `HK_HOME` (dove risiedono i dati, i report e la configurazione),
|
|
189
|
+
`HK_CONFIG` (percorso della configurazione), `HK_DB` (percorso del database), `HK_LOG`
|
|
190
|
+
(`silent`, `normal`, `verbose` o `debug`), `HK_COST_REPOS` e
|
|
191
|
+
`HK_COST_BUDGET` (limiti per il costo per ogni attività), `GH_PATH` (percorso di `gh`).
|
|
129
192
|
|
|
130
|
-
##
|
|
193
|
+
## Mantenere i dati privati
|
|
131
194
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
`hk_summary` · `hk_findings` · `hk_ci` · `hk_repo` · `hk_backlog` · `hk_health` · `hk_cost` · `hk_sql` · `hk_schema`
|
|
135
|
-
|
|
136
|
-
```json
|
|
137
|
-
{
|
|
138
|
-
"mcpServers": {
|
|
139
|
-
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } }
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
```
|
|
195
|
+
**Ciò che una scansione scrive è sensibile. Non inserire `data/` o `reports/` in un
|
|
196
|
+
repository pubblico.**
|
|
143
197
|
|
|
144
|
-
|
|
198
|
+
Uno snapshot registra i nomi e le descrizioni dei repository privati, ogni
|
|
199
|
+
avviso di sicurezza aperto con il pacchetto a cui si riferisce, i file di workflow e la fatturazione di Actions. GitHub nasconde deliberatamente gli avvisi di sicurezza di un repository pubblico a tutti tranne che ai suoi manutentori; uno snapshot pubblicato fornirebbe tale elenco.
|
|
145
200
|
|
|
146
|
-
`
|
|
201
|
+
Il `.gitignore` di questo repository esclude `data/`, `reports/` e
|
|
202
|
+
`housekeeping.config.json`. Per mantenere la cronologia, che è lo scopo degli snapshot,
|
|
203
|
+
eseguire lo strumento da un **repository privato** di proprietà e inserirli lì.
|
|
147
204
|
|
|
148
205
|
## Risultati
|
|
149
206
|
|
|
150
|
-
Le regole sono contenute in `src/analyze.mjs`. Ognuna di esse
|
|
207
|
+
Le regole sono contenute in `src/analyze.mjs`. Ognuna di esse cita la regola scritta che applica,
|
|
208
|
+
quindi un risultato può essere contestato rispetto a uno standard e non al gusto personale. Le regole
|
|
209
|
+
che questo repository distribuisce sono in [`rules/`](rules/):
|
|
151
210
|
|
|
152
|
-
- [`rules/github-actions.md`](rules/github-actions.md): filtri
|
|
153
|
-
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md):
|
|
154
|
-
- [`rules/repo-first.md`](rules/repo-first.md):
|
|
155
|
-
- [`rules/atlas-map.md`](rules/atlas-map.md): una mappa
|
|
211
|
+
- [`rules/github-actions.md`](rules/github-actions.md): filtri dei percorsi, runner, dimensione della matrice, limite del file di workflow, concorrenza.
|
|
212
|
+
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): il CI deve essere superato, i gate di rilascio, le versioni.
|
|
213
|
+
- [`rules/repo-first.md`](rules/repo-first.md): la branch predefinita.
|
|
214
|
+
- [`rules/atlas-map.md`](rules/atlas-map.md): una mappa impegnata di ogni repository, controllata nel CI.
|
|
156
215
|
|
|
157
|
-
|
|
216
|
+
Sono gli standard di un'organizzazione. Se i vostri sono diversi, modificate il file della regola
|
|
217
|
+
e la regola insieme.
|
|
158
218
|
|
|
159
|
-
Le regole si
|
|
219
|
+
Le regole si prendono cura di separare le cose che sembrano simili, perché combinarle produce rumore:
|
|
160
220
|
|
|
161
|
-
- **Un ramo predefinito
|
|
162
|
-
- **La cronologia non è un problema.** Un flusso di lavoro spostato in
|
|
163
|
-
- **Un controllo obbligatorio che non può
|
|
164
|
-
- **
|
|
165
|
-
- **
|
|
166
|
-
- **
|
|
221
|
+
- **Un ramo predefinito rosso non è un ramo di richiesta di pull rosso.** Un ramo di Dependabot che non funziona rappresenta un elemento in sospeso; un'esecuzione `push` non riuscita sul ramo predefinito rappresenta un problema. L'evento dell'esecuzione determina quale sia il caso.
|
|
222
|
+
- **La cronologia non è un problema.** Un flusso di lavoro spostato in una modalità di esecuzione solo per le release mantiene il suo ultimo errore sul ramo predefinito per sempre. Un flusso di lavoro eliminato mantiene le sue esecuzioni. Nessuno dei due rappresenta un difetto attivo.
|
|
223
|
+
- **Un controllo obbligatorio che non può generare alcun risultato non è un controllo che non è stato eseguito qui.** Uno suggerisce di eliminare il requisito; l'altro suggerisce di correggere il trigger. Le correzioni si contraddicono a vicenda.
|
|
224
|
+
- **Una richiesta di pull che il trigger ha saltato non è una richiesta in conflitto.** GitHub non esegue alcun flusso di lavoro per le richieste di pull su una richiesta di pull con conflitti, quindi la sua mancanza di controllo non dice nulla sul trigger. Quest'ultima richiede un rebase.
|
|
225
|
+
- **Un'esecuzione non riuscita non è un'esecuzione annullata.** `cancel-in-progress` esiste per interrompere le esecuzioni obsolete, quindi i minuti annullati rappresentano solitamente la regola di concorrenza in funzione.
|
|
226
|
+
- **Il costo lordo non è il costo netto.** GitHub calcola il costo dei repository pubblici al prezzo pieno e li riduce a zero. Il costo lordo è la potenza di calcolo reale; il costo netto è il denaro reale. Non vengono mai sommati.
|
|
227
|
+
- **Se non viene misurato, non è corretto.** Un repository che GitHub non sta analizzando segnala zero avvisi. Un repository per il quale il controllo dei costi non è stato raggiunto non ha una riga di costo. Entrambi vengono segnalati come sconosciuti.
|
|
167
228
|
|
|
168
229
|
La gravità determina un punteggio di salute: critico 40, alto 15, medio 6, basso 2, informativo 0, dedotto da 100. Il punteggio classifica l'attenzione, non la qualità.
|
|
169
230
|
|
|
@@ -171,8 +232,8 @@ Il [manuale](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) elenca
|
|
|
171
232
|
|
|
172
233
|
## Sicurezza
|
|
173
234
|
|
|
174
|
-
- **Solo lettura.** Il raccoglitore invia query GraphQL e richieste REST `GET`. Non esegue mai operazioni di merge, push,
|
|
175
|
-
- **Nessuna credenziale.** L'autenticazione è quella
|
|
235
|
+
- **Solo lettura.** Il raccoglitore invia query GraphQL e richieste REST `GET`. Non esegue mai operazioni di merge, push, release, pubblicazione o modifica di un'impostazione.
|
|
236
|
+
- **Nessuna credenziale.** L'autenticazione è quella che `gh` già possiede. Nulla viene scritto su disco al riguardo.
|
|
176
237
|
- **Nessuna telemetria.** Gli unici host contattati sono l'API di GitHub, tramite `gh`, e il registro npm, per la ricerca di versioni e avvisi.
|
|
177
238
|
- **Ciò che memorizza** è la parte sensibile: vedere "Mantenere i dati privati".
|
|
178
239
|
|
|
@@ -184,7 +245,7 @@ Segnala una vulnerabilità come descritto in [SECURITY.md](SECURITY.md).
|
|
|
184
245
|
npm test
|
|
185
246
|
```
|
|
186
247
|
|
|
187
|
-
Ogni regola viene testata in entrambe le direzioni: la forma che deve
|
|
248
|
+
Ogni regola viene testata in entrambe le direzioni: la forma che deve essere attivata e la forma adiacente che non deve esserlo. Un verificatore separato deriva nuovamente un campione di risultati da GitHub in tempo reale tramite il proprio canale di comunicazione e, in caso di assenza di database o di rete, lo segnala in modo evidente.
|
|
188
249
|
|
|
189
250
|
## Licenza
|
|
190
251
|
|
package/README.ja.md
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
An operational-health warehouse for a GitHub organization.<br>
|
|
13
|
-
One sweep, one SQLite database, findings you can argue with
|
|
13
|
+
One sweep, one SQLite database, findings you can argue with,<br>
|
|
14
|
+
and the whole-organization view an AI agent needs to coordinate every repository.
|
|
14
15
|
</p>
|
|
15
16
|
|
|
16
17
|
<p align="center">
|
|
@@ -25,28 +26,85 @@
|
|
|
25
26
|
これにより、組織全体に対して、以下のことが一度に回答されます。
|
|
26
27
|
|
|
27
28
|
- どのデフォルトブランチが問題があり、それが壊れたメインラインまたは古い履歴ですか?
|
|
28
|
-
-
|
|
29
|
-
-
|
|
29
|
+
- 必須のチェックが何も実行されないために、マージできないプルリクエストはどれですか?
|
|
30
|
+
- リポジトリ自体の設定で、どのデプロイが拒否されますか?
|
|
30
31
|
- `package.json`、Gitタグ、およびnpmレジストリは、どこで乖離していますか?
|
|
31
|
-
- どのワークフローがActions
|
|
32
|
-
-
|
|
32
|
+
- どのワークフローがActionsのコストルールに違反し、そのコストはいくらで、どのジョブがそのコストを負担しましたか?
|
|
33
|
+
- GitHub自体のアラートカウントでは検出されないアドバイザリを保持しているリポジトリはどれですか?
|
|
33
34
|
|
|
34
35
|
これは監査ツールであり、修正ツールではありません。GitHubを読み取り、何も変更しません。
|
|
35
36
|
|
|
37
|
+
## すべてのリポジトリにわたるエージェント
|
|
38
|
+
|
|
39
|
+
数十のリポジトリを持つ組織では、その状態が保存される単一の場所はありません。housekeepingがその場所であり、そのMCPサーバーである`hk-mcp`が、それをAIエージェントに渡します。これにより、1つのエージェントが組織全体のコーディネーターとして機能できます。
|
|
40
|
+
|
|
41
|
+
1. **スキャン。** `hk refresh`は、すべてのリポジトリのスナップショットを1つ取得します。
|
|
42
|
+
2. **トリアージ。** エージェントは、何が問題があり、何がブロックされており、何が悪化しているかを尋ね、壊れたメインラインと古い履歴、および競合しているプルリクエストと停止しているプルリクエストを区別する回答を取得します。
|
|
43
|
+
3. **一連の処理を計画。** 1つの`hk_sql`クエリは、同じ形状を持つすべてのリポジトリを見つけ、修正を1つのリポジトリあたり1つのプルリクエストにするようにします。
|
|
44
|
+
4. **作業を実行。** housekeepingは書き込みを行いません。エージェントは、独自のツールと独自の権限の下で、プルリクエストを開き、レビューを行います。
|
|
45
|
+
5. **検証。** 再度スキャンします。問題が解決されているか、またはされていないかを確認し、2つのスナップショット間の変更はクエリになります。
|
|
46
|
+
|
|
47
|
+
エージェントが1回の呼び出しで回答する質問:
|
|
48
|
+
|
|
49
|
+
- どのデフォルトブランチが問題があり、どのジョブとステップが原因ですか?
|
|
50
|
+
- どのプルリクエストがマージできず、トリガーまたは競合が原因ですか?
|
|
51
|
+
- GitHubにはアラートが表示されない、本番環境のアドバイザリを保持しているリポジトリはどれですか?
|
|
52
|
+
- スケジュールのルールに違反しているスケジュールされたワークフローはどれで、どのように違反していますか?
|
|
53
|
+
- Actionsのコストはいくらで、どのジョブがそのコストを負担しましたか?
|
|
54
|
+
- 最後のスキャンの後に何が変更されましたか?
|
|
55
|
+
|
|
56
|
+
| ツール | 回答内容 |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `hk_summary` | 最新のスキャンの合計:リポジトリ、問題、プルリクエスト、ワークフロー、検出結果。 |
|
|
59
|
+
| `hk_findings` | コード、重大度、カテゴリ、またはリポジトリごとの検出結果。フィルターを適用していない場合のコードごとのカウント。問題のあるメインラインの検出結果は、問題を引き起こしたジョブとステップの名前を示します。 |
|
|
60
|
+
| `hk_ci` | デフォルトブランチが問題のあるリポジトリと、失敗したワークフロー。また、失敗したスケジュール、失敗したプルリクエストブランチ、およびCIがないリポジトリ。 |
|
|
61
|
+
| `hk_repo` | 完全な1つのリポジトリ:検出結果、ワークフロー、未解決のプルリクエストと問題。 |
|
|
62
|
+
| `hk_backlog` | 組織全体の未解決のプルリクエストまたは問題(古いものから)。 |
|
|
63
|
+
| `hk_health` | リポジトリごとの健全性スコア(最も低いものから)。 |
|
|
64
|
+
| `hk_cost` | リポジトリ、ワークフロー、またはジョブごとのActionsの消費額(総額と純額)。 |
|
|
65
|
+
| `hk_sql` | ウェアハウスに対する読み取り専用の1つの`SELECT`または`WITH`ステートメント。 |
|
|
66
|
+
| `hk_schema` | `hk_sql`クエリを記述するためのテーブルと列。 |
|
|
67
|
+
|
|
68
|
+
すべての回答は、開いてある読み取り専用の最新のスナップショットから取得されます。失敗した呼び出しは、構造化されたエラーを返し、スタックトレースは返しません。
|
|
69
|
+
|
|
70
|
+
### 接続
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
|
|
76
|
+
"atlas": { "command": "atlas", "args": ["mcp"] }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`HK_HOME`は、スキャンを開始するディレクトリです。クローンから、`"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]`を使用します。2番目のサーバーは[Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas)であり、これは1つのリポジトリに対して同じエージェントに回答します(以下を参照)。Windowsでは、グローバルにインストールされたコマンドを`cmd /c`を通じて起動します。
|
|
82
|
+
|
|
83
|
+
## housekeepingとAtlas
|
|
84
|
+
|
|
85
|
+
[Atlas](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas)(`@dogfood-lab/atlas`)は、1つのリポジトリをマッピングします。その構成要素と、すべてのワークフロー、実行内容、公開内容、およびデプロイ内容です。このマップは、`atlas/`としてコミットされ、CIでチェックインされます。housekeepingは組織全体のビューです。これら2つは連携して動作するように構築されています。
|
|
86
|
+
|
|
87
|
+
- **すべてのマップをスキャン。** スキャンは、各リポジトリのコミットされたマップと、その他のすべての情報を読み取り、マップがないリポジトリ、`atlas check`を実行していないリポジトリ、および組織の残りの部分がピンしているものとは異なるエンジンを保持しているリポジトリを報告します。
|
|
88
|
+
- **問題のある実行がどこで発生したか。** デフォルトブランチが問題がある場合、検出結果は、失敗したジョブとステップの名前を示し、マップを通じて、そのステップが実行するコマンドを示します。したがって、修正は適切なファイルから開始されます。
|
|
89
|
+
- **マップからのデプロイメントの事実。** ジョブがデプロイする環境は、マップに記録されている環境から取得されるため、両方のツールはワークフローを同じように読み取ります。
|
|
90
|
+
- **フリート全体のアラート。** Atlasは、実行前に問題が発生するワークフローステップ(たとえば、ジョブがインストールするよりも新しいランタイムを必要とするツール)をフラグします。レポートは、これらをすべてのリポジトリに対して一度にリストします。
|
|
91
|
+
|
|
92
|
+
両方のサーバーを持つエージェントは、「これらの12個のリポジトリがブロックされています」(housekeeping)から、「これはワークフロー、ジョブ、および変更が到達するファイルです」(Atlas)へと移行し、各リポジトリを手動で開く必要はありません。
|
|
93
|
+
|
|
36
94
|
## この構造になっている理由
|
|
37
95
|
|
|
38
96
|
| レイヤー | 選択 | 理由 |
|
|
39
97
|
|---|---|---|
|
|
40
|
-
|
|
|
41
|
-
| 収集 | GitHub GraphQL、ページング | 1
|
|
98
|
+
| トランスポート | `gh` CLI | すでにトークンを保持しています。ツールは、認証情報を保存または要求しません。 |
|
|
99
|
+
| 収集 | GitHub GraphQL、ページング | 1つのクエリは、リポジトリのページに対して、メタデータ、未解決の問題、未解決のプルリクエスト、リリース、およびファイルツリーを返します。タイムアウトし続けるページは半分に分割され、同じカーソルから再要求されます。 |
|
|
42
100
|
| Actionsの実行 | REST | GraphQLにはActionsのインターフェースはありません。 |
|
|
43
|
-
|
|
|
44
|
-
| ランナーの料金 |
|
|
45
|
-
| ストレージ |
|
|
46
|
-
|
|
|
47
|
-
|
|
|
101
|
+
| アクションにはコストがかかる | 請求 API に加えて、ジョブごとの実行時間 | 請求書にはどのリポジトリが記載されており、ジョブにはどのワークフローが記載されているか。GitHub の `/timing` エンドポイントは 0 を返すため、ジョブごとの合計が再計算され、その後、請求書と照合される。 |
|
|
102
|
+
| ランナーの料金 | 請求書から読み取る | 請求される料金は、リスト価格と異なる場合があり、ソースコード内の定数はすべての数値を誤って表示する。 |
|
|
103
|
+
| ストレージ | 組み込みの `node:sqlite` を使用した SQLite | ネイティブのビルドステップはない。 |
|
|
104
|
+
| 信頼できる情報源 | `data/snapshots/*.json` | 生のデータで、差分を比較でき、追加のみが可能。データベースはそこから派生する:`npm run rebuild` はオフラインで再構築する。 |
|
|
105
|
+
| スウィープログ | `data/sweeps.jsonl` | 1行に1つのスウィープを記録。失敗したスウィープと、新しいものが見つからなかったスウィープも含む。 |
|
|
48
106
|
|
|
49
|
-
|
|
107
|
+
スナップショットは不変で累積的であるため、2つの日付間のドリフトは `JOIN` である。
|
|
50
108
|
|
|
51
109
|
## 要件
|
|
52
110
|
|
|
@@ -66,9 +124,9 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
|
|
|
66
124
|
hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
|
|
67
125
|
```
|
|
68
126
|
|
|
69
|
-
|
|
127
|
+
スウィープ間で設定を保持するには、そのディレクトリに `housekeeping.config.json` を配置する(構成を参照)。その後、`hk refresh` に引数は不要。
|
|
70
128
|
|
|
71
|
-
|
|
129
|
+
または、クローンから実行すると、そのデータはクローンに保存される。
|
|
72
130
|
|
|
73
131
|
```bash
|
|
74
132
|
git clone https://github.com/mcp-tool-shop-org/housekeeping.git
|
|
@@ -79,7 +137,7 @@ cp housekeeping.config.example.json housekeeping.config.json # then set "org"
|
|
|
79
137
|
hk refresh
|
|
80
138
|
```
|
|
81
139
|
|
|
82
|
-
|
|
140
|
+
次に、クエリを実行する。
|
|
83
141
|
|
|
84
142
|
```bash
|
|
85
143
|
hk summary # portfolio totals
|
|
@@ -95,17 +153,17 @@ hk sql "SELECT ..." # one read-only statement
|
|
|
95
153
|
hk help # every command and flag
|
|
96
154
|
```
|
|
97
155
|
|
|
98
|
-
`npm link
|
|
156
|
+
`npm link` がないクローンでは、各 `hk <command>` は `node src/cli.mjs <command>` である。
|
|
99
157
|
|
|
100
|
-
`npm run rebuild
|
|
158
|
+
`npm run rebuild` は、ディスク上の既存のスナップショットからデータベースとレポートを再派生させ、ネットワークアクセスは行わない。
|
|
101
159
|
|
|
102
|
-
|
|
160
|
+
完全なスウィープでは、数百回の API 呼び出しが行われる。`refresh` をループで実行しないこと。
|
|
103
161
|
|
|
104
|
-
|
|
162
|
+
結果は標準出力に出力され、進行状況とエラーは標準エラーに出力される。すべてのエラーには、コードとヒントが出力される。終了コード:0(正常)、1(ユーザーエラー)、2(実行時エラー)、3(部分的 - スウィープは完了したが、ギャップがある)。
|
|
105
163
|
|
|
106
164
|
## 構成
|
|
107
165
|
|
|
108
|
-
`housekeeping.config.json
|
|
166
|
+
`housekeeping.config.json` は、ハウスキーピングが実行されるディレクトリにある(下記参照)。
|
|
109
167
|
|
|
110
168
|
```json
|
|
111
169
|
{
|
|
@@ -114,73 +172,56 @@ hk help # every command and flag
|
|
|
114
172
|
}
|
|
115
173
|
```
|
|
116
174
|
|
|
117
|
-
- `org
|
|
118
|
-
- `metaRepos
|
|
175
|
+
- `org` は、スウィープする組織である。`hk refresh <org>` でオーバーライドできる。どちらも指定されていない場合、スウィープは開始されない。
|
|
176
|
+
- `metaRepos` は、組織のデフォルト、アセット、またはツールを格納するリポジトリであり、出荷される製品ではない。これらは、製品にのみ意味がある結果(README、LICENSE などのファイルがない、ワークフローがない、リリースがない)から除外される。
|
|
119
177
|
|
|
120
|
-
|
|
178
|
+
形式が正しくないファイルはエラーであり、サイレントなデフォルトになることはない。不明なキー、誤った型、または破損した JSON は、実行を停止させる。
|
|
121
179
|
|
|
122
|
-
|
|
180
|
+
クローンから実行すると、ハウスキーピングは `data/`、`reports/`、および構成ファイルをクローンに保存する。インストールされたパッケージとして実行すると、実行するディレクトリまたは `HK_HOME`(設定されている場合)に保存する。
|
|
123
181
|
|
|
124
|
-
環境:`HK_HOME`(データ、レポート、および構成が保存される場所)、`HK_CONFIG`(構成パス)、`HK_DB`(データベースパス)、`HK_LOG`(`silent`、`normal`、`verbose
|
|
182
|
+
環境:`HK_HOME`(データ、レポート、および構成が保存される場所)、`HK_CONFIG`(構成パス)、`HK_DB`(データベースパス)、`HK_LOG`(`silent`、`normal`、`verbose`、または `debug`)、`HK_COST_REPOS`、および `HK_COST_BUDGET`(ジョブごとのコストの制限)、`GH_PATH`(`gh` へのパス)。
|
|
125
183
|
|
|
126
184
|
## データを非公開に保つ
|
|
127
185
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
スナップショットには、プライベートリポジトリの名前と説明、パッケージ名を含むすべての未解決のセキュリティアラート、ワークフローファイル、およびActionsの課金が記録されます。GitHubは、パブリックリポジトリのセキュリティアラートを、そのリポジトリのメンテナー以外のすべてのユーザーから意図的に非表示にします。公開されたスナップショットは、そのリストを公開することになります。
|
|
131
|
-
|
|
132
|
-
このリポジトリの`.gitignore`は、`data/`、`reports/`、および`housekeeping.config.json`を除外します。履歴を保持することがスナップショットの目的であるため、独自の**プライベート**リポジトリからツールを実行し、そこにコミットしてください。
|
|
133
|
-
|
|
134
|
-
## MCPサーバー
|
|
135
|
-
|
|
136
|
-
`hk-mcp`(またはクローン内の`npm run mcp`)は、標準入出力(stdio)を介してデータストアにアクセスするため、アシスタントは数メガバイトのデータ全体を読み込むことなく質問をすることができます。
|
|
137
|
-
|
|
138
|
-
`hk_summary` · `hk_findings` · `hk_ci` · `hk_repo` · `hk_backlog` · `hk_health` · `hk_cost` · `hk_sql` · `hk_schema`
|
|
139
|
-
|
|
140
|
-
```json
|
|
141
|
-
{
|
|
142
|
-
"mcpServers": {
|
|
143
|
-
"housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } }
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
```
|
|
186
|
+
**スウィープによって書き込まれる内容は機密情報である。`data/` または `reports/` をパブリックリポジトリにコミットしないこと。**
|
|
147
187
|
|
|
148
|
-
|
|
188
|
+
スナップショットには、プライベートリポジトリの名前と説明、パッケージ名を含むすべての開いているセキュリティアラート、ワークフローファイル、および Actions の請求情報が記録される。GitHub は、パブリックリポジトリのセキュリティアラートを、そのリポジトリのメンテナー以外のすべてのユーザーから意図的に非表示にする。公開されたスナップショットは、そのリストを公開することになる。
|
|
149
189
|
|
|
150
|
-
`
|
|
190
|
+
このリポジトリの `.gitignore` は、`data/`、`reports/`、および `housekeeping.config.json` を除外する。履歴を保持することがスナップショットの目的であるため、独自の**プライベート**リポジトリからツールを実行し、そこにコミットすること。
|
|
151
191
|
|
|
152
192
|
## 検出結果
|
|
153
193
|
|
|
154
|
-
|
|
194
|
+
ルールは `src/analyze.mjs` にある。各ルールは、適用する書面によるルールを参照するため、検出結果は、好みに基づいてではなく、標準に基づいて議論できる。このリポジトリに同梱されているルールは、[`rules/`](rules/) にある。
|
|
155
195
|
|
|
156
|
-
- [`rules/github-actions.md`](rules/github-actions.md)
|
|
157
|
-
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md)
|
|
158
|
-
- [`rules/repo-first.md`](rules/repo-first.md)
|
|
159
|
-
- [`rules/atlas-map.md`](rules/atlas-map.md)
|
|
196
|
+
- [`rules/github-actions.md`](rules/github-actions.md):パスフィルター、ランナー、マトリックスサイズ、ワークフローファイルの制限、同時実行。
|
|
197
|
+
- [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md):CI はパスする必要がある、出荷ゲート、バージョン。
|
|
198
|
+
- [`rules/repo-first.md`](rules/repo-first.md):デフォルトブランチ。
|
|
199
|
+
- [`rules/atlas-map.md`](rules/atlas-map.md):各リポジトリのコミットされたマップ。CI でチェックされる。
|
|
160
200
|
|
|
161
|
-
|
|
201
|
+
これらは、ある組織の標準である。異なる場合は、ルールファイルとルールを一緒に変更する。
|
|
162
202
|
|
|
163
|
-
|
|
203
|
+
ルールは、似たもの同士を区別するように注意している。なぜなら、それらをまとめてしまうとノイズが発生するからである。
|
|
164
204
|
|
|
165
|
-
- **赤いデフォルトブランチは、赤いプルリクエストブランチではありません。** 失敗したDependabot
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
205
|
+
- **赤いデフォルトブランチは、赤いプルリクエストブランチではありません。** 失敗した Dependabot ブランチはバックログであり、デフォルトブランチで失敗した `push` の実行は問題を引き起こします。どちらであるかは、実行のイベントによって決まります。
|
|
206
|
+
- **履歴は問題ではありません。** リリース専用のトリガーに移動したワークフローは、最後のデフォルトブランチでの失敗を永久に保持します。削除されたワークフローは、その実行を保持します。どちらも現在の欠陥ではありません。
|
|
207
|
+
- **実行できないチェックは、ここで実行されなかったチェックではありません。** 一方は、要件を削除すると言います。もう一方は、トリガーを修正すると言います。これらの修正は互いに矛盾します。
|
|
208
|
+
- **トリガーがスキップしたプルリクエストは、競合しているプルリクエストではありません。** GitHub は、競合のあるプルリクエストに対してプルリクエストワークフローを実行しないため、欠落しているチェックはトリガーについて何も意味しません。これは、リベースが必要です。
|
|
209
|
+
- **失敗した実行は、キャンセルされた実行ではありません。** `cancel-in-progress` は、古い実行を終了させるために存在するため、キャンセルされた時間は通常、同時実行ルールの動作によるものです。
|
|
210
|
+
- **総コストは、純コストではありません。** GitHub は、パブリックリポジトリに対して全額料金を請求し、それをゼロに割引します。総コストは実際の計算量であり、純コストは実際の費用です。これらは決して合計されません。
|
|
211
|
+
- **測定されていないものは、問題ありません。** GitHub がスキャンしていないリポジトリは、アラートをゼロとして報告します。コストの計算に達していないリポジトリは、コストの行を持ちません。どちらも不明として報告されます。
|
|
171
212
|
|
|
172
|
-
|
|
213
|
+
重大度によって健全性スコアが決まります。重大なものは 40、高いものは 15、中程度のものは 6、低いものは 2、情報提供のみのものは 0 で、これらはすべて 100 から差し引かれます。スコアは品質ではなく、優先度を示します。
|
|
173
214
|
|
|
174
|
-
[ハンドブック](https://mcp-tool-shop-org.github.io/housekeeping/handbook/)には、すべての検出結果、コマンド、エラーコード、およびテーブルがリストされています。
|
|
215
|
+
[ハンドブック](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) には、すべての検出結果、コマンド、エラーコード、およびテーブルがリストされています。
|
|
175
216
|
|
|
176
217
|
## セキュリティ
|
|
177
218
|
|
|
178
|
-
- **読み取り専用。**
|
|
179
|
-
- **認証情報なし。** 認証は、`gh
|
|
180
|
-
-
|
|
181
|
-
-
|
|
219
|
+
- **読み取り専用。** コレクターは GraphQL クエリと REST `GET` を発行します。マージ、プッシュ、リリース、公開、または設定の編集は行いません。
|
|
220
|
+
- **認証情報なし。** 認証は、`gh` がすでに保持しているものを使用します。それに関する情報はディスクに書き込まれません。
|
|
221
|
+
- **テレメトリなし。** 連絡するホストは、`gh` を介した GitHub API と、バージョンおよびアドバイザリの検索のための npm レジストリのみです。
|
|
222
|
+
- **保存する内容** が機密性の高い部分です。「データのプライバシーを維持する」を参照してください。
|
|
182
223
|
|
|
183
|
-
[SECURITY.md]
|
|
224
|
+
[SECURITY.md] に説明されているように、脆弱性を報告してください。
|
|
184
225
|
|
|
185
226
|
## テスト
|
|
186
227
|
|
|
@@ -188,12 +229,12 @@ hk help # every command and flag
|
|
|
188
229
|
npm test
|
|
189
230
|
```
|
|
190
231
|
|
|
191
|
-
|
|
232
|
+
すべてのルールは、両方向でテストされます。つまり、トリガーされるべき形状と、トリガーされるべきでない隣接する形状です。別の検証ツールは、独自のトランスポートを介して、ライブ GitHub から検出結果のサンプルを再計算し、データベースまたはネットワークがない場合は、エラーを発生させます。
|
|
192
233
|
|
|
193
234
|
## ライセンス
|
|
194
235
|
|
|
195
|
-
MIT。 [LICENSE](LICENSE)を参照してください。
|
|
236
|
+
MIT。 [LICENSE](LICENSE) を参照してください。
|
|
196
237
|
|
|
197
238
|
---
|
|
198
239
|
|
|
199
|
-
<a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a
|
|
240
|
+
<a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> によって作成されました。
|