Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-24 13:26 UTC

StringKe / std-agent

One .stdai/ source of truth, fanned out to 22 AI coding tools: Claude Code, Codex, Cursor, Copilot, Gemini CLI, Windsurf/Devin, Amp, Warp and more. Native formats, Agent Skills, MCP, context budgets, drift detection.

GoMIT★ 8 estrellas⑂ 1 forkdesde may 2026Ver en GitHub ↗

StringKe/std-agent tiene un índice de salud de 53 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (86/100) y la más baja, Security (26/100). Se actualizó por última vez hace 7 días. Una sola persona concentra la mayor parte del trabajo reciente.

53
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

53
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

stringkeCuenta personal
54 seguidores100 repositorios públicosdesde ago 2017

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/StringKe/std-agentv0.0.10-10hace 7 días

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

68Moderado · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 7 días
4.8/36Cadencia de commits — 7/52 semanas con commits
13.5/18Volumen de commits — 31 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year31
human_commit_share1
days_since_last_push7
active_weeks_last_year7
Cómo se puntúa
27/27Publica versiones — 10 versiones publicadas
36/36Recencia de las versiones — última versión hace 7 días
27/27Cadencia de publicación — una versión cada ~7,7 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count10
latest_release_tagv0.0.10
releases_from_tagsno
days_since_latest_release7
mean_days_between_releases7,7

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

31En riesgo · 18% del índice global
Cómo se puntúa
13.7/60Estrellas — 8 estrellas
0/25Forks — 1 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks1
stars8
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

47En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.7/22.5Distribución de commits — el principal contribuyente firma el 97% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,968
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
19.1/38.3Aceptación de PR — 1/2 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 1/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs1
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
12.5/25Alcance del propietario — 54 seguidores de StringKe
25/25Trayectoria — 100 repos públicos, cuenta de ~8 años
Datos de entrada utilizados
followers54
owner_typeUser
is_verified
owner_loginStringKe
public_repos100
account_age_days3263
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 7 días
20/20Historial de versiones — 10 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/StringKe/std-agent
ecosystemsgo
any_deprecatedno
min_days_since_publish7

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

86Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://github.com/StringKe/std-agent
10/10Descripción del repositorio
10/10Topics — 19 topics
0/10Wiki
Datos de entrada utilizados
topicsagents-md, ai, ai-agents, ai-cli, ai-tools, claude, codex, copilot, cursor, developer-tools, gemini, golang, mcp, agent-skills, agents, ai-configuration, cli, windsurf, stdagent
has_wikino
homepagehttps://github.com/StringKe/std-agent
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

26Crítico · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 25 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate2,6

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

82Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .cursor/rules/commit-style.mdc, .cursor/rules/glossary.md, .cursor/rules/no-history-rewrite.mdc, .cursor/rules/references/transformer-design.md, .cursor/rules/root.mdc, .cursor/rules/test-requirements.mdc, .github/copilot-instructions.md, .github/instructions/references/transformer-design.instructions.md, .github/instructions/test-requirements.instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, internal/transformer/testdata/golden/claude-code/CLAUDE.md, internal/transformer/testdata/golden/codex/AGENTS.md, internal/transformer/testdata/golden/gemini/GEMINI.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 31 de 31 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files.cursor/rules/commit-style.mdc, .cursor/rules/glossary.md, .cursor/rules/no-history-rewrite.mdc, .cursor/rules/references/transformer-design.md, .cursor/rules/root.mdc, .cursor/rules/test-requirements.mdc, .github/copilot-instructions.md, .github/instructions/references/transformer-design.instructions.md, .github/instructions/test-requirements.instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, internal/transformer/testdata/golden/claude-code/CLAUDE.md, internal/transformer/testdata/golden/codex/AGENTS.md, internal/transformer/testdata/golden/gemini/GEMINI.md
agent_instruction_max_bytes6850
Cómo se puntúa
18/18Arranque con un solo comando — mise.toml
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 31
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum
has_dockerfileno
typed_language
bootstrap_filesmise.toml
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
55/55Tamaños de archivo manejables — 0/133 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes21.657
source_files_sampled133
oversized_source_files0

Datos clave

8estrellas de GitHub
2contribuidores
31commits en los últimos 12 meses
7días desde el último push
10versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 2.6 / 10
2.6agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-24 13:26 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities25 existing vulnerabilities detected
Dependencias directas 6
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/bmatcuk/doublestar/v4v4.10.0go.mod
Gogithub.com/go-git/go-git/v5v5.19.0go.mod
Gogithub.com/inconshreveable/go-updatev0.0.0-20160112193335-8152e7eb6ccfgo.mod
Gogithub.com/pelletier/go-toml/v2v2.3.1go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "agents-md",
        "ai",
        "ai-agents",
        "ai-cli",
        "ai-tools",
        "claude",
        "codex",
        "copilot",
        "cursor",
        "developer-tools",
        "gemini",
        "golang",
        "mcp",
        "agent-skills",
        "agents",
        "ai-configuration",
        "cli",
        "windsurf",
        "stdagent"
      ],
      "is_fork": false,
      "size_kb": 2266,
      "has_wiki": false,
      "homepage": "https://github.com/StringKe/std-agent",
      "languages": {
        "Go": 550319,
        "Shell": 3059,
        "Batchfile": 1008,
        "PowerShell": 4173
      },
      "pushed_at": "2026-07-17T07:34:11Z",
      "created_at": "2026-05-07T17:21:02Z",
      "owner_type": "User",
      "updated_at": "2026-07-21T13:16:54Z",
      "description": "One .stdai/ source of truth, fanned out to 22 AI coding tools: Claude Code, Codex, Cursor, Copilot, Gemini CLI, Windsurf/Devin, Amp, Warp and more. Native formats, Agent Skills, MCP, context budgets, drift detection.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "https://qingmu.me/",
      "name": "stringke",
      "type": "User",
      "login": "StringKe",
      "company": null,
      "location": "UAE",
      "followers": 54,
      "avatar_url": "https://avatars.githubusercontent.com/u/31089228?v=4",
      "created_at": "2017-08-17T04:50:14Z",
      "is_verified": null,
      "public_repos": 100,
      "account_age_days": 3263
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.0.10",
          "kind": "patch",
          "published_at": "2026-07-17T07:36:00Z"
        },
        {
          "tag": "v0.0.9",
          "kind": "patch",
          "published_at": "2026-07-10T18:35:10Z"
        },
        {
          "tag": "v0.0.8",
          "kind": "patch",
          "published_at": "2026-06-11T07:40:48Z"
        },
        {
          "tag": "v0.0.7",
          "kind": "patch",
          "published_at": "2026-06-02T10:00:41Z"
        },
        {
          "tag": "v0.0.6",
          "kind": "patch",
          "published_at": "2026-05-26T13:06:16Z"
        },
        {
          "tag": "v0.0.5",
          "kind": "patch",
          "published_at": "2026-05-17T16:02:02Z"
        },
        {
          "tag": "v0.0.4",
          "kind": "patch",
          "published_at": "2026-05-17T15:05:08Z"
        },
        {
          "tag": "v0.0.3",
          "kind": "patch",
          "published_at": "2026-05-12T09:39:50Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2026-05-08T15:39:45Z"
        },
        {
          "tag": "v0.0.1",
          "kind": "patch",
          "published_at": "2026-05-08T14:36:51Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ea33ddf170bd74c2b9410f6f351e8f4c12e99f88",
          "body": "Kimi Code CLI(MoonshotAI/kimi-code,kimi-cli 继任产品):\n- rules:root 进 AGENTS.md(层级发现原生消费),nonRoot inline\n- skills / commands:共享 .agents/skills/ 落点,与 codex / amp / warp /\n  antigravity 字节一致去重(铁律扩到五家,新增\n  TestKimiCodeCodexSkillByteIdentical 防回归)\n- references / subagents:降级私有 .kimi-code/rules/(explainer 含\n\n[…]\nnts/)\n- budget:root-file SOFT 8000 / HARD 32768 + agents-md-total 32768\n  (官方 32KiB 层级预算)\n- 登记:schema / smoke / intro / explain / 10 语言 README /\n  docs(含修复 docs/README.md 过期的调研清单)/ 自举 config + sync 产物",
          "is_bot": false,
          "headline": "feat(kimi-code): 新增 Kimi Code CLI target(第 23 个)",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-17T07:31:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87873164b77c7e55a322b0267d6442801af05c0c",
          "body": "- docs/targets/*.md:按 2026-07 官方文档核查结论逐篇修正(skills/commands/\n  subagents 落点、root 发现链、嵌套语义、limit 全集、UNKNOWN 回填),\n  与 transformer 实际实现对照一致\n- README x10 语言:以新英文版为源全量重写,22 target 表格、Release /\n  Go Report Card 徽章、Spec-accurate 卖点、Grok Build 更名\n- 源文档 11 个工具计数全部更新为 22",
          "is_bot": false,
          "headline": "docs: 22 篇 target 调研文档刷新至 2026-07-10 + 10 语言 README 全量重写",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-10T18:30:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dca4a3bb5c820939433316ba8fb702db38d5c84",
          "body": "…n 双写\n\n- parser: Document 新增 user_invocable / disallowed_tools / readonly /\n  background 四个 frontmatter 字段\n- codex: subagents 追加原生 .codex/agents/<n>.toml\n  (name/description/model/developer_instructions),过渡期保留\n  .agents/subagents/*.md 降级产物\n- claude-code: command 复用 skill 全字段集(官方已合并 commands 与 skills\n[…]\nndsurf: rules 产物镜像双写 .devin/rules/(Windsurf 并入 Cognition,\n  .devin/rules/ 成为首选目录,.windsurf/rules/ 仍被读取)\n- continue-dev: NestedPath 文档写 <path>/rules.md(continue 只认固定文件名\n  colocated rule,不读嵌套 AGENTS.md)",
          "is_bot": false,
          "headline": "feat(transformer): 2026-07 规范对齐 P1——subagents TOML / schema 扩展 / devi…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-10T18:16:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efef6f0e2cf968a05f05d86d5a5bb8e5e5ce0ce0",
          "body": "- 删假数字:claude-code / gemini root-file 无官方硬上限(Claude 官方明确\n  全量加载不截断),Hard 归 0 只留软警戒;copilot 4000/8000 截断规则已于\n  2026-06-12 官方移除,改纯软建议\n- 改语义:codex 32768 标注为链累计口径 + 文件粒度停止 + config.toml 可调\n  默认值;windsurf 12000 标注 per-file 且超限行为官方未定义\n- 新增官方硬上限:cursor rule/root-file 100000(截断)、copilot subagent\n  30000、ant\n[…]\nkills 规范 skill-name 64 / skill-description 1024\n  (硬拒载)、claude-code skill-listing 1536(listing 截断)\n- CheckDocument 新增 skill frontmatter 字段长度检查与 subagent body 检查;\n  CheckTotalRules 支持 rules-total 类总量上限",
          "is_bot": false,
          "headline": "feat(budget): Limits 表按 2026-07 官方文档重写",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-10T18:10:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d5e71fd4cc025868b71e1c269024575c3978be1",
          "body": "对照 22 个 target 官方文档核实(docs/sdlc/2026-07-10/spec-refresh/spec.md):\n\n- claude-code: SKILL.md 工具字段 tools -> allowed-tools(官方字段名,写错被静默忽略)\n- copilot: skills 已 GA,从 WARN 降级改为原生 .github/skills/<n>/SKILL.md\n- cursor: subagents 原生 .cursor/agents/<n>.md(不再降级到 rules 子目录)\n- gemini/qwen/roo/kilo/continue/augment\n[…]\nileOp.JSONMerge 深合并(object 递归/array 并集/scalar 保留用户值,\n  JSONC 解析失败跳过 WARN 不破坏用户配置,永不 prune)\n- runner: WARN 收集移到 Apply 之后,覆盖 JSONMerge 阶段告警\n\nBREAKING CHANGE: 10 个 target 的 skills 输出路径变更,旧路径由 prune 自动清理。",
          "is_bot": false,
          "headline": "feat(transformer)!: 2026-07 规范对齐 P0——skills 原生路径全面迁移",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-10T18:07:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5fb9dd4299dfbb591390bb19dc71de07e5f418e6",
          "body": "BREAKING CHANGE: module path 改为 github.com/StringKe/std-agent,goreleaser\nproject_name 与 release 归档前缀改为 std-agent,旧版本二进制 self-upgrade\n断链(需用 install.sh 重装);安装脚本环境变量 STD_AI_* 更名 STD_AGENT_*;\n生成产物的 std-agent-type 字段与类型速查标题随项目更名。.stdai/ 配置目录\n与 .stdaiignore 保持不变。",
          "is_bot": false,
          "headline": "feat(release)!: 项目重命名 std-ai -> std-agent",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-07-10T17:41:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aaaf253f7f02243aa39700fd3a4f81aa81d069d",
          "body": "Codex 复核结论:memories 是 ~/.codex/memories/ 用户级自动记忆系统\n(mem v2 起单根,无项目级目录),项目级 .codex/ 是官方 Team Config\n配置目录(config.toml / rules/*.rules execpolicy / skills/),均不承载\nmarkdown 指令。.codex/memories/ 不被任何 Codex 机制读取。\n\n- codex adapter:RulesDir 置空(rules inline,amp/warp 同风格),\n  FallbackDir 改 .agents/(references/su\n[…]\nphans 去重修复重复计数\n- budget:codex 限额文案不再引导依赖 spill\n- docs:codex 调研结论更新,conversion-rules 旧方案删除\n\nBREAKING CHANGE: codex target 不再产 .codex/memories/,已有产物在\n下次 sync 时自动 prune;references 迁移到 .agents/references/",
          "is_bot": false,
          "headline": "fix(codex)!: 废弃 .codex/memories,rules 全文 inline 到 AGENTS.md",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-06-11T07:35:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a471294090db3dd7fd4bc2e531112070223edda3",
          "body": "Codex scans all .agents/skills/**/SKILL.md; stale cmd-<name>/ dirs left\nby the commands/ subdir migration (and never recorded in state) kept\nloading formatter-broken files. Also add Codex SKILL frontmatter regression\ntests.",
          "is_bot": false,
          "headline": "fix(runner): prune legacy cmd-* Codex skill paths after v3 migration",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-06-02T09:56:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "909663fd66cac9e4b767401075e0816b1e58dd96",
          "body": "YAML frontmatter 仅从文件首行起才合法。原先 BuildMarkdownFile 把 header HTML\n注释写在 frontmatter --- 之前,导致 --- 非首行,下游 markdown formatter(oxfmt)\n把它当 thematic break、把 description 行重排成 heading,破坏所有带 frontmatter\n的产物(skills SKILL.md / cursor rules / windsurf rules / github instructions)。\n\n改为:frontmatter 非空时 header marker 落在 --- 闭合之后、body 之前;无\nfrontmatter 时仍在文件最前。补 BuildMarkdownFile 首行/marker 位置防回归单测。",
          "is_bot": false,
          "headline": "fix(transformer): frontmatter 占文件首行,header marker 移到 --- 之后",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-26T11:06:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0fa6246f73c731b670a3e77c5209818b9187820",
          "body": "两项 v0.0.4 设计错误修复,准备 v0.0.5 发版。\n\n## 1. references 路径重构(不再借 SkillsDir)\n\nv0.0.4 把 references fallback 走 BuildDegradedSkillPackage 落到\n<SkillsDir>/<name>/SKILL.md(Agent Skills 标准路径),意图是让多 AGENTS.md 工具共\n享。但这是**语义错位**:把 references 装成 SKILL.md 等于把 references 当 skill 用,\nAI 会按 skill 触发逻辑(description 匹配主动调用)加载\n[…]\n-cli -> grok-build\n- intro_prompt.md Tier 2 列表更新\n- docs/targets/grok-cli.md -> docs/targets/grok-build.md 内容重写(含官方 URL、\n  v0.0.4 -> v0.0.5 修订说明、UNKNOWN 清单)\n\nself-bootstrap idempotent OK,mise check 全绿。",
          "is_bot": false,
          "headline": "fix(transformer): references 走独立子目录 + grok-cli rename 为 grok-build",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T15:57:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14eb264a1c0def64c04ccaf7d3a0fb5f044ce315",
          "body": "… cmd-)\n\n清理 v0.0.4 残留的 std-ai 私有前缀(违反 v3 \"不造私有前缀,用子目录隔离\" 原则):\n\n1. antigravity adapter SkillsAsRule: true -> false\n   - 原产物 .agents/rules/skill-add-target.md 含 std-ai 私有 skill- 前缀\n   - 改走 BuildDegradedSkillPackage 标准 Agent Skills fallback:\n     .agents/rules/skills/add-target/SKILL.md\n   - 同名测试断言更新\n\n\n[…]\nmmand 不是 skill)\n   - 同名测试断言(agents_md_test / codex_smoke_test)+ help/what-is-commands.md 更新\n\n清理后 grep -E \"skill-|cmd-\" 工作树(除 .stdai/backups/ 历史快照)零私有前缀。\nsync prune 自动删除旧违规文件。所有现有测试 PASS,mise check 全绿。",
          "is_bot": false,
          "headline": "refactor(transformer): remove v3 violation private prefixes (skill- /…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T15:18:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "48de899f65de440ce83eb759ac6e585fb0300e0d",
          "body": "… protocol)\n\n最小可发版文档更新(其他 9 份多语言 README / docs/targets 详细修订 /\nconversion-rules / format-spec 大改留 v0.0.5):\n\n- README.md (英文):\n  * 标题段 \"11 AI CLI tools\" -> \"22 AI CLI tools\"\n  * Tier 1 表 9 -> 14 行(加 roo-code / crush / amp / warp / factory)\n  * Tier 2 表 2 -> 8 行(加 qwen-code / pi / kilo-code / augment-c\n[…]\nul degradation\n\n- internal/cli/intro_prompt.md:\n  * 顶部说明改为 22 个 AI CLI 工具 + Tier 1/2 工具清单\n  * 加 graceful degradation 简介(子目录隔离 + std-ai-type frontmatter,无 std-ai-private 前缀)\n  * 命令速查表加 stdagent explain",
          "is_bot": false,
          "headline": "docs: update README + intro_prompt for v0.0.4 (22 targets / explain /…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T15:00:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c927fc8a0b3cf69aaf56cf713cf8fd08a131edbe",
          "body": "… supported tools\n\nPhase 5 完成。新增 11 个 AI CLI 工具支持,stdagent 现在覆盖 22 个 target。\n\nHIGH(Tier 1,~25-50 行 adapter):\n- roo-code  Cline fork,18k stars,Clinerules protocol\n- crush     Charmbracelet,5k+ stars,AgentsMD + CRUSH.md\n- amp       Sourcegraph,AGENTS.md 标准原推动者\n- warp      Warp 终端,2026 已默认 AGENTS.md\n- \n[…]\n / jules / qwen / grok 同模式\n\nself-bootstrap:22 target sync 跑通,内容稳定。\n(已知 minor:多 transformer 写同一 AGENTS.md 时 writer 计数虚高 3 written,\n内容 git diff 空,不影响功能;待后续 writer 去重优化)\nmise run check 全绿(lint 0 issues)。",
          "is_bot": false,
          "headline": "feat(transformer): add 11 new targets (HIGH 5 + MEDIUM 6) totaling 22…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T14:56:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "989d43118d2fe93568dec65052bb94fcb38f98d3",
          "body": "…in command\n\nPhase 4 完成。Phase 3 已落地的部分:\n- 4.1 references 全 11 target fallback(子目录隔离,无私有前缀)\n- 4.3 type glossary 自动注入根文件 + 无根 target 的 <RulesDir>/glossary.md\n\n本 commit 补 4.2 / 4.4:\n\n4.2 subagent CLI 调用降级形态 B:\n- copilot adapter 加 SubagentInvokeCmd=\"claude --agent {name}\"\n- copilot 原生支持 subagents,但当 Sub\n[…]\nmd 后\n\n用法:\n  stdagent explain                # 全部 5 种 type 速查\n  stdagent explain rules          # 单查 rules\n  stdagent explain --json         # AI / 自动化集成\n\nself-bootstrap idempotent + mise run check 全绿。",
          "is_bot": false,
          "headline": "feat(degradation,cli): copilot subagent CLI fallback + stdagent expla…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T14:43:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08246db373a7973c5daa5e38ae28f5b6bafcf229",
          "body": "Phase 3 完成。11 个 transformer 全部委托给 protocol,行 1201 -> 415 行:\n\n- claude-code 200 -> 49(ClaudeMD protocol,含 50 行私有字段 helper 在 protocol 内部)\n- codex 196 -> 38(AgentsMD + InjectCommandsToRoot + CommandsAsSkillPrefix=cmd-)\n- copilot 138 -> 53(Copilot + .vscode/mcp.json servers 顶级键)\n- antigravity 115 -> 42(\n[…]\nglobs(v3 trigger 推断更准确,applyTo 有 glob 时 trigger=glob 而非 alwaysApply=true)\n\nself-bootstrap idempotent:sync 跑两次第二次 0 written 0 pruned。\nmise run check:lint 0 issues,transformer 包覆盖率 97.6%,protocol 89.4%。",
          "is_bot": false,
          "headline": "refactor(transformer): migrate 11 existing transformers to adapter form",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T14:38:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8a3bdb76f3bf13cb31c81541bba1f4e04b62620",
          "body": "…util\n\n为 v0.0.4 引入三层架构(Transformer + Protocol + Adapter)。本 commit 不切换 11 个现有 transformer 的实现(Phase 3 才委托),仅引入抽象层,行为完全不变。\n\n新增 internal/transformer/transformerutil/:\n- 把 util.go 中 non-target-specific 工具下沉为独立包,避免后续 protocol/ 与\n  transformer/ 双向 import 形成循环。\n- 含 FmBuilder / BuildMarkdownFile / SkillDir \n[…]\nag\ninject_type_glossary,默认 true)。\n\ninternal/transformer/transformer_test.go / filter_test.go:smoke 测试拆分残余\n+ FilterDocs / targetApplies 单测。\n\n全部现有 22 个 smoke test 保持 PASS(lint 0 issues、race + cover 全绿)。",
          "is_bot": false,
          "headline": "feat(transformer): protocol/adapter layer + 6 protocols + transformer…",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T14:27:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6b9a362b01ef6037b4073d1547d9bd0ac4c411d",
          "body": "为 v0.0.4 protocol 抽象重构准备测试基础设施:\n\n- 拆 internal/transformer/smoke_test.go(526 行 22 个测试函数)为\n  11 个 per-target *_smoke_test.go + smoke_helpers_test.go +\n  5 个跨 target 测试保留在 smoke_test.go。行为完全一致。\n- 建立 golden file 基线 internal/transformer/testdata/golden/\n  含 9 个 target 共 19 个代表文件(CLAUDE.md / AGENTS.md /\n \n[…]\nsync 取得。Phase 3 transformer 迁移以此作 byte-equivalent 对照。\n- internal/parser/references_smoke_test.go 端到端验证 references\n  类型现有 parser 行为符合 v0.0.4 需求(PASS:Type==references\n  Name + ApplyTo 全正确,无需 schema 扩展)。",
          "is_bot": false,
          "headline": "chore(test): split smoke_test.go per-target + establish golden baseline",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T14:00:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b133f24554b6fd484f967b774035c2d2479e71a",
          "body": null,
          "is_bot": false,
          "headline": "chore: ignore docs/sdlc/ (local SDLC workflow artifacts)",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T13:51:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c38066456c4ca66470be068990875a3765ba0833",
          "body": "补齐本仓 .stdai/standards/ 的另外 3 种 type,让仓库覆盖全部 5 种 std-ai type:\n\n- skills/add-target/SKILL.md       加新 target transformer 的工作流(applyTo 限定 internal/transformer/**)\n- commands/release-patch.md        slash 命令 /release-patch,patch 发版流程\n- references/transformer-design.md transformer 包设计参考(interface / FileO\n[…]\nws/ .clinerules/workflows/ .gemini/commands/*.toml .opencode/\n.continue/prompts/ .github/prompts/ .github/agents/ .agents/skills/ .agents/workflows/\n\n让其他开发者直接看到 std-ai 5 种 type 在 11 个 target 上的完整扩散形态。",
          "is_bot": false,
          "headline": "chore(stdai): add skill / command / reference demo sources",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:52:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc0579d4cde099b8b3a6c4429d2f7926bc6e1e72",
          "body": "把仓库自己的 .stdai/config.toml 11 个 target 全部 enable,让其他开发者直接看到\nstdagent sync 在各家 AI CLI 工具下的产物形态。\n\n生成的扩散文件:\n- .claude/rules/ (Claude Code)         已存在\n- .codex/memories/ (Codex)             已存在\n- .cursor/rules/*.mdc (Cursor)         新\n- .windsurf/rules/ (Windsurf)          新\n- .clinerules/ (Cline)      \n[…]\nMINI.md (Gemini CLI)               新\n- .github/copilot-instructions.md      新\n- .github/instructions/                新(Copilot scoped instructions)\n\nconfig.toml 加注释说明这是 demo 用,提醒用户在自己项目里只开用得到的 target。",
          "is_bot": false,
          "headline": "chore(stdai): enable all 11 targets for demo",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:47:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f01dab3554bc0602a2072f790785d7691f128d18",
          "body": "新增 which 命令:给定文件路径,扫 .stdai/standards/ 下所有 docs 的 frontmatter\napplyTo glob,返回应当为该文件加载的 rules / references / subagents。设计目的\n是让 AI 助手按需加载上下文(编辑某文件前 query which,针对性 Read 相关 docs),\n而不是预加载全部 .claude/rules/。\n\n输出格式:\n- 默认人类可读表格(含 type / name / priority / source / matched glob / description)\n- --json 给 AI / \n[…]\n--paths 只输出源路径,方便 pipe(cat $(stdagent which --paths ...))\n- --type=rules,references 按 type 过滤\n- --include-global 也列出无 applyTo 的全局 docs\n\nintro_prompt.md 加\"按需加载上下文\"章节说明该工作流。\n10 份 README 命令清单同步加 which 行。",
          "is_bot": false,
          "headline": "feat(cli): add stdagent which <path> for on-demand context routing",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:44:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d790690076c4f78f024f9c46e7963783c880f7c",
          "body": "让本仓库自举:用 stdagent 管理自己的 AI 助手规则。\n\n- .stdai/config.toml 启用 claude-code + codex 两个 target\n- .stdai/standards/root.md 项目总览(模块结构 / 技术栈 / 铁律 / 维护流程)\n- .stdai/standards/rules/ 3 条核心规则:test-requirements / no-history-rewrite / commit-style\n- 跑 stdagent sync 生成 CLAUDE.md / AGENTS.md / .claude/rules/ / .codex/memories/\n- .gitignore 排除 .stdai/{backups,cache,state.json} 运行时产物\n- 顺手删除 .claude/scheduled_tasks.lock 旧产物",
          "is_bot": false,
          "headline": "chore(stdai): bootstrap repo with .stdai/ + sync artifacts",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:35:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31b105697a5f4c005fd1bc03e7813c457f73c23c",
          "body": "- 4 份现存 README 头部用 docs/assets/hero.png banner 替换标语行\n- 加\"从已有项目迁移到 std-ai\"章节,含可直接复制给 AI 的提示词块\n- 新增 6 份语言版本:ko / ru / fr / de / es / pt-BR\n- 统一 10 份 README 的 language switcher",
          "is_bot": false,
          "headline": "docs(readme): hero banner + migration prompt + 6 new languages",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dbef74b4a98df762fe102b24c311a877d31cedd",
          "body": "sync 现在默认会删除\"上次写过但本次不再产出\"的孤儿文件,解决\"规则从 30 个减到 15 个\"\n场景下的残留问题。新增 --no-prune flag 兜底;DryRun 模式只汇报、不真删;submodule\n边界 path 永远跳过。\n\n同时修复一个预存 bug:unchanged skip 的 path 现在也会写入 state.Outputs,否则\n下次 sync 无从识别孤儿。\n\n补 4 个测试:TestSyncPrunesOrphans / TestSyncNoPruneKeepsOrphans /\nTestSyncDryRunReportsPrune / TestSyncUnchangedStillTrackedInState。",
          "is_bot": false,
          "headline": "feat(sync): prune orphans on sync + --no-prune flag",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T12:34:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45cded50197aaf9424ad8d12b2f883b241d1791f",
          "body": "writer_test.go:93 两侧 HeaderComment(opts) 调用完全相同,\nstaticcheck SA4000 判为笔误导致 CI lint 失败。改为与 83 行\n已有的 h 变量比较,保持确定性验证语义不变。",
          "is_bot": false,
          "headline": "fix(writer): 复用 h 变量比较,消除 staticcheck SA4000",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-17T11:27:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4424da297920fd3fc0abdbda22f82d8758194e0",
          "body": "HeaderComment 不再渲染 `at <RFC3339>`,删除 stripGeneratedMarker 与\nwriter.Apply 二次归一化分支。生成时间在 .stdai/state.json 已有记录。\n\n迁移:含旧 marker 的目标文件下次 sync 会重写一次,之后 byte-identical。\n\n- 删 FooterOptions.GeneratedAt 与 transformer time.Now()\n- 删 stripGeneratedMarker、writer.Apply 二次判等\n- 合并 marker-timestamp 相关测试为单一 determinism 用例\n- spec.md / conversion-rules.md marker 样例对齐",
          "is_bot": false,
          "headline": "refactor(writer): marker 移除 timestamp,输出 deterministic",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-12T09:37:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5df1a4adc1a2e43d70ca1267bc157b445a6f46c",
          "body": "…s (#1)\n\nHeaderComment injects time.Now() as 'at <RFC3339>' on every sync, so\nbytes.Equal between the existing file and the new content was always\nfalse. Every inject=true output got rewritten by atomicWrite, refreshing\nthe mtime and producing a noisy git diff even when the underlying source\ndocs ha\n[…]\nmestamp.\n\nAdds tests covering: timestamp-only change is skipped, mtime is\npreserved, body change still writes through, and stripGeneratedMarker\nitself.\n\nCo-authored-by: joestea <joeshao1993@gmail.com>",
          "is_bot": false,
          "headline": "fix(writer): skip rewrite when only generated marker timestamp differ…",
          "author_name": "nin39six",
          "author_login": "nin39six",
          "committed_at": "2026-05-11T06:57:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cacc857750420079425e5501a1dcdc04889679bb",
          "body": "Claude Code 官方仅支持 .claude/rules/<n>.md frontmatter `paths` 字段触发条件加载。\n之前写 `applyTo:` 是抄 GitHub Copilot 字段名,Claude Code 不识别会无条件加载所有 rule\n导致 session 启动 context 浪费。\n\n- claude-code transformer: applyTo -> paths\n- 删 alwaysApply 输出(Cursor 私有字段,Claude Code 忽略)\n- 保留 description 作为人类可读 metadata(Claude Code 把整\n[…]\net 字段已对:\n- Cursor: globs (CSV) + description + alwaysApply ✓\n- Cline: paths ✓\n- Continue.dev: globs + description + alwaysApply ✓\n- Copilot: applyTo (CSV) ✓\n- Windsurf: trigger + globs + description ✓",
          "is_bot": false,
          "headline": "fix(claude-code): 用 paths 字段而非 applyTo(官方文档要求)",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-08T15:34:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6f211ac216d6fe129b70335e9afafd75887cc9fb",
          "body": null,
          "is_bot": false,
          "headline": "fix(release): ignore CHANGELOG_LATEST.md so goreleaser sees clean tree",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-08T14:32:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "019f5e7b9c81c852cbfebf666632fc82d2865a98",
          "body": "核心设计转向:stdagent 是 AI 调用的发布器,不是静态工具\n\n- 删除 hooks 注入(apply-hooks / install-hook 命令、hooks.json 加载、stdagent-hooks 中间文件)\n- 删除 frontmatter root: true 字段,改路径模式:.stdai/standards/root.md 自动识别为根文件主体\n- 嵌套机制:.stdai/standards/nested/<sub-path>/root.md 输出到 <sub-path>/CLAUDE.md / AGENTS.md(无 manifest,纯说明文档)\n- 同 git\n[…]\n\n实战验证(真实多仓 igx-9nice 工作区,主仓 + 8 submodule):\n- 第一次迁移:codex 自主完成 100 rule + 14 嵌套 root(含 igx-cloud 5 + igx-platform 8)\n- 第二次维护:仅动 .stdai/standards/,sync 增量更新产物\n- 嵌套产物 14 对 CLAUDE.md+AGENTS.md 全部正确生成到深路径",
          "is_bot": false,
          "headline": "feat: AI-driven workflow + 嵌套 CLAUDE.md + submodule 边界保护",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-08T14:27:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6b2ad39ec73b97c65dd86a28f7ae62dd016dde07",
          "body": null,
          "is_bot": false,
          "headline": "chore: initial commit",
          "author_name": "StringKE",
          "author_login": "StringKe",
          "committed_at": "2026-05-08T08:36:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 10,
      "commits_last_year": 31,
      "latest_release_at": "2026-07-17T07:36:00Z",
      "latest_release_tag": "v0.0.10",
      "releases_from_tags": false,
      "days_since_last_push": 7,
      "active_weeks_last_year": 7,
      "days_since_latest_release": 7,
      "mean_days_between_releases": 7.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/StringKe/std-agent",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/StringKe/std-agent",
          "is_deprecated": false,
          "latest_version": "v0.0.10",
          "repository_url": "https://github.com/StringKe/std-agent",
          "versions_count": 10,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T07:31:26Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 7
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 8,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-05-10",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "mise.toml"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 21657,
      "source_files_sampled": 133,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".cursor/rules/commit-style.mdc",
        ".cursor/rules/glossary.md",
        ".cursor/rules/no-history-rewrite.mdc",
        ".cursor/rules/references/transformer-design.md",
        ".cursor/rules/root.mdc",
        ".cursor/rules/test-requirements.mdc",
        ".github/copilot-instructions.md",
        ".github/instructions/references/transformer-design.instructions.md",
        ".github/instructions/test-requirements.instructions.md",
        "AGENTS.md",
        "CLAUDE.md",
        "GEMINI.md",
        "internal/transformer/testdata/golden/claude-code/CLAUDE.md",
        "internal/transformer/testdata/golden/codex/AGENTS.md",
        "internal/transformer/testdata/golden/gemini/GEMINI.md"
      ],
      "agent_instruction_max_bytes": 6850
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/bmatcuk/doublestar/v4",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.10.0"
        },
        {
          "name": "github.com/go-git/go-git/v5",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.19.0"
        },
        {
          "name": "github.com/inconshreveable/go-update",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20160112193335-8152e7eb6ccf"
        },
        {
          "name": "github.com/pelletier/go-toml/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.3.1"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 1,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "StringKe",
          "commits": 30,
          "avatar_url": "https://avatars.githubusercontent.com/u/31089228?v=4"
        },
        {
          "type": "User",
          "login": "nin39six",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/219800733?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.968
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 1/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "25 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ea33ddf170bd74c2b9410f6f351e8f4c12e99f88",
        "ran_at": "2026-07-24T13:26:06Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T07:36:04Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-05-11T06:57:28Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/StringKe/std-agent",
    "host": "github.com",
    "name": "std-agent",
    "owner": "StringKe"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 53,
      "inputs": {
        "security": 26,
        "vitality": 68,
        "community": 31,
        "governance": 47,
        "engineering": 86
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 68,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "commits_last_year": 31,
              "human_commit_share": 1,
              "days_since_last_push": 7,
              "active_weeks_last_year": 7
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "7/52 weeks with commits",
                "points": 4.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "31 commits in the last year",
                "points": 13.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 10,
              "latest_release_tag": "v0.0.10",
              "releases_from_tags": false,
              "days_since_latest_release": 7,
              "mean_days_between_releases": 7.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "10 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 7 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~7.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 31,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 14,
            "inputs": {
              "forks": 1,
              "stars": 8,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8 stars",
                "points": 13.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 47,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 12,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.968
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 97% of commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 36,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/2 decided PRs merged",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 2
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 59,
            "inputs": {
              "followers": 54,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "StringKe",
              "public_repos": 100,
              "account_age_days": 3263
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "54 followers of StringKe",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 54,
                      "login": "StringKe"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "100 public repos, account ~8 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 100
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/StringKe/std-agent"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 7
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 7 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 7
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "10 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 86,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "agents-md",
                "ai",
                "ai-agents",
                "ai-cli",
                "ai-tools",
                "claude",
                "codex",
                "copilot",
                "cursor",
                "developer-tools",
                "gemini",
                "golang",
                "mcp",
                "agent-skills",
                "agents",
                "ai-configuration",
                "cli",
                "windsurf",
                "stdagent"
              ],
              "has_wiki": false,
              "homepage": "https://github.com/StringKe/std-agent",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://github.com/StringKe/std-agent",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "19 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 19
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 26,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 2.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "25 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 82,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".cursor/rules/commit-style.mdc",
                ".cursor/rules/glossary.md",
                ".cursor/rules/no-history-rewrite.mdc",
                ".cursor/rules/references/transformer-design.md",
                ".cursor/rules/root.mdc",
                ".cursor/rules/test-requirements.mdc",
                ".github/copilot-instructions.md",
                ".github/instructions/references/transformer-design.instructions.md",
                ".github/instructions/test-requirements.instructions.md",
                "AGENTS.md",
                "CLAUDE.md",
                "GEMINI.md",
                "internal/transformer/testdata/golden/claude-code/CLAUDE.md",
                "internal/transformer/testdata/golden/codex/AGENTS.md",
                "internal/transformer/testdata/golden/gemini/GEMINI.md"
              ],
              "agent_instruction_max_bytes": 6850
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".cursor/rules/commit-style.mdc, .cursor/rules/glossary.md, .cursor/rules/no-history-rewrite.mdc, .cursor/rules/references/transformer-design.md, .cursor/rules/root.mdc, .cursor/rules/test-requirements.mdc, .github/copilot-instructions.md, .github/instructions/references/transformer-design.instructions.md, .github/instructions/test-requirements.instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, internal/transformer/testdata/golden/claude-code/CLAUDE.md, internal/transformer/testdata/golden/codex/AGENTS.md, internal/transformer/testdata/golden/gemini/GEMINI.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".cursor/rules/commit-style.mdc, .cursor/rules/glossary.md, .cursor/rules/no-history-rewrite.mdc, .cursor/rules/references/transformer-design.md, .cursor/rules/root.mdc, .cursor/rules/test-requirements.mdc, .github/copilot-instructions.md, .github/instructions/references/transformer-design.instructions.md, .github/instructions/test-requirements.instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md, internal/transformer/testdata/golden/claude-code/CLAUDE.md, internal/transformer/testdata/golden/codex/AGENTS.md, internal/transformer/testdata/golden/gemini/GEMINI.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "31 of 31 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 31,
                      "sampled": 31
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "mise.toml"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "mise.toml",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "mise.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 31",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 31
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 21657,
              "source_files_sampled": 133,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/133 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 133,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T13:26:13.147201Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/StringKe/std-agent.svg",
  "full_name": "StringKe/std-agent",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasGo.