diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fb704dd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,66 @@ +# Changelog + +All notable changes to creed are documented here. The format follows +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project +adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.3.0] — 2026-08-19 + +The first post-reset feature release. Everything shipped since v0.1.0 lands +here: three new targets, a generated interaction surface set (CLI + MCP + +HTTP), new workflow commands, and a hardened git remote source. + +### Added + +- **Generated interaction surfaces.** `internal/service.Service` is now the + single source of truth for operations; `go generate ./...` emits CLI + commands, MCP tools, and HTTP routes from operation descriptors parsed off + the service interface. `scripts/check-generated.sh` gates CI on generated + code being current and idempotent. +- **MCP stdio server.** `creed mcp serve [--root PATH]` runs the generated + tool surface over stdio for MCP clients such as Claude Desktop and Cursor. +- **New targets.** `gemini` (`GEMINI.md` + `.gemini/` skills), `copilot` + (`.github/copilot-instructions.md`), and `opencode` + (`.opencode/agents/` + AGENTS.md) join the target registry. +- **`creed watch`** — debounced auto-sync when `.creed/` sources change, + with `--target` and `--debounce` flags and `--quiet` mode. +- **`creed diff`** — line-level preview of changes between rendered target + output and what is on disk. +- **`creed validate`** — manifest + referenced source validation without + writing outputs; structured diagnostics surfaced identically across CLI, + MCP, and HTTP. +- **`creed doctor`** — non-mutating diagnostic report covering project root, + manifest presence, validation summary, configured targets, and git + availability. Never exposes sensitive values. +- **Config management operations.** `add-config`, `remove-config`, + `list-configs`, `add-skill`, `remove-skill`, `list-skills`, + `enable-target`, `disable-target` — manifest editing without hand-editing + YAML. + +### Changed + +- **Git remote source hardening.** Credentials now flow through go-git auth + methods instead of embedded clone URLs; remote URLs are sanitized in error + messages. Private HTTPS (service token), public HTTPS, and SSH + (`SSH_AUTH_SOCK` or `CREED_GIT_SSH_KEY` + `CREED_GIT_SSH_PASSPHRASE`) + are supported. Cached clones are reused only when remote HEAD matches the + cached SHA. +- CLI `--version` and the MCP server implementation version now report + `0.3.0`. + +## [0.1.0] — 2026-07-14 + +First release. Local + git-remote sources, target output descriptors, +sync/dry-run/force, and the ports-and-adapters core. + +## [0.2.0] — 2026-07-07 (pre-reset, superseded) + +Tagged before the repository reset, on an ancestor of the v0.1.0 commit. +The module proxy and checksum database pin `v0.2.0` to that pre-reset tree, +so the version number is permanently associated with it. **The 0.3.0 release +above supersedes everything in it.** Do not install v0.2.0; its release +notes are preserved on GitHub only for historical reference. + +[0.3.0]: https://github.com/techgodhq/creed/releases/tag/v0.3.0 +[0.1.0]: https://github.com/techgodhq/creed/releases/tag/v0.1.0 +[0.2.0]: https://github.com/techgodhq/creed/releases/tag/v0.2.0 diff --git a/README.md b/README.md index 7daa787..98b2b03 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,11 @@ Every AI coding tool has its own conventions: | Tool | Context files | |------|---------------| | Claude Code | `CLAUDE.md`, `.claude/skills/` | +| GitHub Copilot | `.github/copilot-instructions.md` | | Cursor | `.cursor/rules/` | | Codex | `AGENTS.md` | | Gemini CLI | `GEMINI.md`, `.gemini/` | +| OpenCode | `AGENTS.md`, `.opencode/agents/` | | Generic agents | `AGENTS.md` | | Windsurf | `.windsurfrules` | | Aider | `.aider.conf.yml`, `CONVENTIONS.md` | @@ -28,6 +30,12 @@ directory the canonical source and emits target-specific files from it. go install github.com/techgodhq/creed@latest ``` +For a pinned release: + +```bash +go install github.com/techgodhq/creed@v0.3.0 +``` + From a checkout: ```bash @@ -66,6 +74,26 @@ creed watch --target claude --debounce 250ms # Quiet mode: report only errors creed watch --quiet + +# Check the manifest and referenced source files without writing outputs +creed validate + +# Diagnose the project setup: root, manifest, targets, git availability +creed doctor + +# Preview line-level changes between rendered output and disk +creed diff +creed diff --target claude + +# Manage manifest registrations without hand-editing YAML +creed add-skill review skills/review.md +creed remove-skill review +creed list-skills +creed add-config project config/project.md +creed remove-config project +creed list-configs +creed enable-target gemini +creed disable-target aider ``` `creed init` is non-destructive: rerunning it creates missing starter files but @@ -81,6 +109,8 @@ By default, `creed init` creates: The generated manifest enables `claude`, `codex`, and `cursor` with `output_dir: .`. Less universal targets (`agents`, `aider`, `gemini`, and `windsurf`) are listed but disabled until you opt in. +Newer targets (`copilot`, `opencode`) are scaffolded disabled as well and can +be enabled with `creed enable-target`. ## Manifest format @@ -105,12 +135,18 @@ targets: - name: codex enabled: true output_dir: . + - name: copilot + enabled: false + output_dir: . - name: cursor enabled: true output_dir: . - name: gemini enabled: false output_dir: . + - name: opencode + enabled: false + output_dir: . - name: windsurf enabled: false output_dir: . diff --git a/cmd/root.go b/cmd/root.go index e416fe9..eb38053 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,7 +6,7 @@ import ( "github.com/techgodhq/creed/internal/service" ) -const version = "0.1.0" +const version = "0.3.0" var rootCmd = &cobra.Command{ Use: "creed", diff --git a/internal/mcp/server.go b/internal/mcp/server.go index d1858cb..cde9784 100644 --- a/internal/mcp/server.go +++ b/internal/mcp/server.go @@ -52,7 +52,7 @@ func NewServer(service service.Service) *Server { service: service, mcpServer: serverlib.NewMCPServer( "creed", - "0.1.0", + "0.3.0", serverlib.WithToolCapabilities(true), serverlib.WithStrictInputSchemaDefault(), serverlib.WithInputSchemaValidation(),