Skip to content

feat: scaffold initial repo structure, docs, and CI - #1

Merged
OmarAlJarrah merged 5 commits into
mainfrom
feat/initial-scaffold
Jul 21, 2026
Merged

feat: scaffold initial repo structure, docs, and CI#1
OmarAlJarrah merged 5 commits into
mainfrom
feat/initial-scaffold

Conversation

@OmarAlJarrah

Copy link
Copy Markdown
Member

Summary

  • Adds the openapi/<version>/<api>/ directory layout for versioned spec fixtures, seeded with the Petstore OpenAPI 3.1 spec as the first real example (v3.0/v3.2 scaffolded empty for now).
  • Adds a README, CLAUDE.md contributor guide, and a design-decisions doc covering the directory conventions and the reasoning behind the CI tooling choices below.
  • Adds CI:
    • lint.yml (push, PR): yamllint for YAML syntax, jq for JSON syntax, and openapi spec validate (github.com/speakeasy-api/openapi — the same OpenAPI parser morphic itself depends on) for structural validity of every spec file. This was chosen over Spectral, which raised false-positive errors on this repo's OpenAPI 3.1 fixture's $id-based JSON Schema 2020-12 references.
    • release.yml (push to main): bundles the spec directories into a tarball and publishes it as a GitHub release tagged with the commit SHA — one release per commit on main, no semantic versioning.
  • The seed Petstore spec had one real defect ($vocabulary as a bare string instead of a JSON-Schema-2020-12-compliant object) that openapi spec validate caught; fixed in this copy.

Test plan

  • openapi spec validate openapi/v3.1/petstore/spec.yaml — 0 errors
  • yamllint -c .yamllint.yml against the seed spec — 0 errors
  • Verified the pinned go install github.com/speakeasy-api/openapi/cmd/openapi@<pseudo-version> command installs and resolves correctly (the CLI has no tagged releases, only the underlying library does)
  • Locally simulated the release workflow's tar bundling step and confirmed the resulting archive contains exactly the expected files
  • Reviewed both workflow files for GitHub Actions correctness and injection/trust-boundary risk; bumped softprops/action-gh-release to v3 since v2 is an upstream-declared, soon-to-be-unsupported Node20 release

Add the openapi/<version>/<api>/ layout for versioned spec fixtures,
with the Petstore OpenAPI 3.1 spec as the first real example. v3.0
and v3.2 are scaffolded empty pending further examples.
Document the repo's purpose, directory conventions, and CI, and add
the dexpace wordmark for branding consistency with the morphic repo.
Also records the design decisions behind the scaffold, including the
provenance check and fix applied to the seed Petstore spec.
Lint every push and PR: yamllint for YAML syntax, jq for JSON syntax,
and openapi spec validate (the same OpenAPI parser morphic itself
depends on) for structural validity of every spec file.

Release every push to main: bundle the spec directories into a
tarball and publish it as a GitHub release tagged with the commit
SHA, so there's one release per merged commit.
Pin the third-party release action to its exact commit rather than
the mutable v3 tag, so the workflow can't be affected if that tag is
ever repointed upstream.
@OmarAlJarrah OmarAlJarrah changed the title Scaffold initial repo structure, docs, and CI feat: scaffold initial repo structure, docs, and CI Jul 21, 2026
@OmarAlJarrah
OmarAlJarrah merged commit e78da44 into main Jul 21, 2026
2 checks passed
@OmarAlJarrah
OmarAlJarrah deleted the feat/initial-scaffold branch July 21, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant