Skip to content

feat: positive-marker repo detection and scaffold auto-registration#75

Merged
TMHSDigital merged 1 commit into
mainfrom
feat/scaffold-positive-detect-and-register
Jun 14, 2026
Merged

feat: positive-marker repo detection and scaffold auto-registration#75
TMHSDigital merged 1 commit into
mainfrom
feat/scaffold-positive-detect-and-register

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Hardens and completes the tool-scaffolding subsystem so a repo cannot be born wrong, born unknown, or born unregistered.

  • Positive-marker type detection. _detect_repo_type now keys on positive manifest markers (.cursor-plugin/plugin.json => cursor-plugin; package.json => mcp-server) instead of incidental directory presence. An mcp-server rendered with skills/ previously flipped to unknown and silently lost required-workflow enforcement; it now classifies correctly. package.json added to SPARSE_PATHS so mode: all detection sees the marker.
  • Registry auto-registration. create-tool.py registers every generated repo in registry.json by default and regenerates derived artifacts via the shared sync_all code path. --no-register is the escape hatch. The live registry is untouched by this PR; registration is exercised hermetically against a temp registry root in tests.
  • Callable library entrypoint. Canonical generation logic factored into importable scaffold/generator.py (generate_repo / build_registry_entry / register_in_registry); create-tool.py is now a thin CLI. A second generator can delegate instead of reimplement.
  • Convergence contract. standards/born-green-contract.md codifies the born-green acceptance criterion (C1-C6) any generator must satisfy.
  • Tests. Born-green test extended with the previously-breaking shapes (mcp-server with skills, empty cursor-plugin) and a registration round-trip.

Bumps VERSION 1.16.3 -> 1.17.0.

Test plan

  • pytest -q (238 passed, 1 skipped network-integration)
  • python scripts/sync_from_registry.py --check clean (registry untouched)
  • py_compile create-tool.py, generator.py, sync_from_registry.py
  • mcp-server-with-skills detects mcp-server; empty cursor-plugin detects cursor-plugin
  • registration round-trip: schema-valid entry, sync --check clean against temp root
  • CI green across Validate, Drift check, Sync, CodeQL, Pages

Harden the tool-scaffolding subsystem so a repo cannot be born wrong,
born unknown, or born unregistered.

- _detect_repo_type keys on positive manifest markers (.cursor-plugin/
  plugin.json => cursor-plugin; package.json => mcp-server) instead of
  incidental directory presence. An mcp-server rendered with skills/ now
  classifies correctly instead of flipping to unknown and silently losing
  required-workflow enforcement. Adds package.json to SPARSE_PATHS so
  mode=all detection sees the marker.
- create-tool.py registers every generated repo in registry.json by
  default and regenerates derived artifacts via the shared sync_all code
  path; --no-register is the escape hatch. The live registry is untouched.
- Canonical generation logic factored into importable scaffold/generator.py
  (generate_repo / build_registry_entry / register_in_registry) so a second
  generator can delegate instead of reimplement. create-tool.py is a thin CLI.
- standards/born-green-contract.md codifies the born-green acceptance
  criterion (C1-C6) any generator must satisfy.
- Born-green test extended with the previously-breaking shapes (mcp-server
  with skills, empty cursor-plugin) and a registration round-trip against a
  temp registry root.

Bumps VERSION 1.16.3 -> 1.17.0.

Signed-off-by: fOuttaMyPaint <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@TMHSDigital TMHSDigital merged commit 0d17c72 into main Jun 14, 2026
15 checks passed
@TMHSDigital TMHSDigital deleted the feat/scaffold-positive-detect-and-register branch June 14, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant