chore(sdd): bootstrap SDD governance artifacts#216
Conversation
Initialize spec-kit (.specify/ scaffolding, templates, scripts, workflows) and add AGENTS.md for the checkout-graphql repository, per the Engineering Golden Path of the SDLC in the GenAI Era. This repository is public, so the rendered constitution is routed to out/spec-repo/checkout-graphql/constitution.md (not committed here) and mirrored to the central spec-repo by the rollout pipeline. Detected family: vtex-io-app Detected state: green-field Visibility: public Generated by the sdd-bootstrap skill. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Hi! I'm VTEX IO CI/CD Bot and I'll be helping you to publish your app! 🤖 Please select which version do you want to release:
And then you just need to merge your PR when you are ready! There is no need to create a release commit/tag.
|
|
Beep boop 🤖 I noticed you didn't make any changes at the
In order to keep track, I'll create an issue if you decide now is not a good time
|
fdaciuk
left a comment
There was a problem hiding this comment.
A few issues to address before this can be merged.
| - Schema changes MUST be additive and backwards-compatible. Breaking changes require a major bump in `manifest.json` and a consumer migration note in the PR description. | ||
| - The `@cacheControl` directive MUST be reviewed when added or modified — order-form and profile responses are PII-bearing and have specific cache scoping in `node/directives/noCache.ts`, `withOrderFormId.ts`, `withOwnerId.ts`. | ||
|
|
||
| ### Constitution |
There was a problem hiding this comment.
The Golden Path standard requires both Expected skills and Expected MCPs sections in AGENTS.md — mandatory for both minimal and detailed modes. Add a section listing the internal VTEX skills the team expects agents to use (e.g. specification, implementing) and another for the relevant MCPs (e.g. GitHub MCP, Atlassian MCP).
| - NEVER call third-party HTTP from outside `node/clients/`. | ||
| - NEVER bypass the husky `pre-commit` hook (`--no-verify`) in normal development — it runs `lint-staged` (eslint + prettier). | ||
| - AVOID local `vtex publish` for non-beta releases; the canonical path is CI-driven publish + deploy. | ||
| - NEVER execute `vtex deploy` at all cost. |
| "branch_numbering": "sequential", | ||
| "context_file": ".cursor/rules/specify-rules.mdc", | ||
| "here": true, | ||
| "integration": "cursor-agent", |
There was a problem hiding this comment.
integration still points to cursor-agent, but the .cursor/ files were removed in this PR. Running specify init locally will regenerate them. Update this to the integration the team actually uses, or document the expected behavior.
| @@ -0,0 +1 @@ | |||
| AGENTS.md No newline at end of file | |||
There was a problem hiding this comment.
The Golden Path how-to requires symlinking .claude/skills → .agents/skills, .claude/commands → .agents/commands, and .claude/rules → .agents/rules so Claude Code picks up the installed skills. Without these, /specification and /implementing won't be available in Claude Code without manual per-developer setup. Either commit the symlinks or add a setup step to the README/AGENTS.md.
Summary
This PR introduces the SDD governance artifacts required by the Engineering Golden Path:
.cursor/) to keep the repository neutral; engineers can regenerate them locally withuvx --from git+https://github.com/github/spec-kit.git specify init . --here --integration <their-tool>.out/spec-repo/checkout-graphql/constitution.md— non-negotiable principles and standards. Because this repository is public, the constitution is routed to the central spec-repo and is not committed here (see Public-Repo Routing below).AGENTS.md— agent-facing operational guidance (105 lines).It was generated automatically by the
sdd-bootstrapskill, against a repository ingreen-fieldstate. Treat it as a starting point, not a finished document — your team owns the final content. The PR is intentionally opened as a draft; mark it ready-for-review when the team is satisfied.Repository State
green-field— no.specify/directory was present; spec-kit was initialized as part of this PR.Detected Family
vtex-io-appEvidence:
manifest.jsondeclares"vendor": "vtex"and abuildersblock (graphql: 1.x,node: 6.x).node/resolvers/(one file per top-level GraphQL type); directives are declared ingraphql/directives.graphqlwith implementations innode/directives/.node/service.json(stack: nodejs).manifest.json.dependencies:vtex.country-data-settings,vtex.graphql-server,vtex.messages.If the detected family is wrong, close this PR and re-run the skill manually with the correct family override; do not edit this PR's files to retrofit a different family.
What Was Generated
.specify/scaffolding (scripts/,templates/,workflows/,integrations/,init-options.json,integration.json)uvx specify init . --here --integration cursor-agent --force --no-git..specify/memory/constitution.mdout/spec-repo/checkout-graphql/constitution.mdin the bootstrap working tree and is mirrored to the central spec-repo by the rollout pipeline.AGENTS.mdConstitution version: 1.0.0 (first ratification of the constitution for this repository).
Note on IDE-specific files: spec-kit also generates slash commands and skill files under
.cursor/,.claude/, or.github/prompts/depending on the--integrationflag. This skill removes those after initialization to keep the repository IDE-neutral. If you want them locally, run:This regenerates only the IDE-specific commands; it does not touch
.specify/.Files Preserved (not modified by this PR)
README.md,CHANGELOG.md,.github/CODEOWNERS,.github/workflows/ci.yml,.github/workflows/test-node.yml,lint.sh,sonar-project.properties,manifest.json,package.json,yarn.lock,node/**,graphql/**,docs/**,.gitignore— all untouched.Dockerfile,Makefile, or vendored dependency was modified.Review Checklist (the team must complete before merge)
vtex-io-app) is correct.green-field) matches what you expected — there was no prior.specify/directory inmain.node/, Node 12.x in CI, yarn, vtex-test-tools, eslint-config-vtex).AGENTS.mdmatches the real layering of this repository.yarn lint,cd node && yarn test:coverage,cd node && yarn tsc --noEmit,vtex link/publish/deploy) run successfully on a fresh checkout.<!-- TODO(team) -->markers in the constitution have been resolved or intentionally accepted (see list below).AGENTS.mdis under 200 lines (currently 105) and free of aspirational rules (only enforced ones).AGENTS.mdhas been reviewed for completeness against this repo's risk profile.@vtex-apps/checkout-uiis the right approver for amendments.Open
<!-- TODO(team) -->items (in the constitution)yarn test:coverageand reported to SonarQube (sonar-project.properties), but no threshold is enforced in CI.vtex login <ACCOUNT>/vtex use <WORKSPACE>values if the team uses a shared development workspace.Public-Repo Routing
This repository's
gh repo viewreportsvisibility: PUBLIC. Per the Golden Path, constitutions for public repositories live in the centralized spec-repo, not alongside the source.out/spec-repo/checkout-graphql/constitution.mdin the bootstrap working tree.SPEC_REPO_PAYLOAD.json) was emitted at the working-tree root for the rollout pipeline to pick up:{ "source_repo": "vtex-apps/checkout-graphql", "target_path": "out/spec-repo/checkout-graphql/constitution.md", "default_branch": "main", "family": "vtex-io-app" }out/spec-repo/**norSPEC_REPO_PAYLOAD.jsonis staged in this PR — they are intentionally local to the bootstrap working directory.AGENTS.md(this file) points reviewers to the spec-repo location in its "Constitution" section.Out of Scope
skill.mdfiles; skills are distributed centrally viavtex/vtex-agent-skills.Dockerfile,Makefile, or vendored dependencies. If any of those need updating to match the new constitution, open a follow-up PR. Note:.github/workflows/ci.ymlandtest-node.ymlcurrently targetmasterwhile the default branch ismain— that's pre-existing repo state and outside the skill's allowlist.constitution.md. Re-running the skill after this PR merges will produce an audit Issue instead of another PR.How to Re-run
Re-running on a repository where this PR has already been merged (and the constitution has propagated to the spec-repo) produces an audit Issue rather than another PR; the skill never silently overwrites a populated constitution.
Made with Cursor