diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..96ecbd2 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,49 @@ +name: Deploy GitHub Pages + +on: + push: + branches: + - main + - worktree-github-pages + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.2" + bundler-cache: true + working-directory: docs + - uses: actions/configure-pages@v5 + with: + enablement: true + - name: Build + working-directory: docs + run: bundle exec jekyll build + env: + JEKYLL_ENV: production + - uses: actions/upload-pages-artifact@v3 + with: + path: docs/_site + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deploy.outputs.page_url }} + steps: + - id: deploy + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index e762e60..13ef3ab 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,9 @@ recording.jfr # OS X .DS_Store + +# Jekyll / GitHub Pages +docs/_site/ +docs/.jekyll-cache/ +docs/.jekyll-metadata +docs/vendor/ diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..506fda2 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem "jekyll", "~> 4.3" +gem "jekyll-remote-theme" +gem "jekyll-optional-front-matter" +gem "jekyll-relative-links" +gem "jekyll-include-cache" diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 0000000..ba9fb98 --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,105 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (4.1.2) + colorator (1.1.0) + concurrent-ruby (1.3.6) + csv (3.3.5) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86_64-linux-gnu) + forwardable-extended (2.6.0) + google-protobuf (4.34.1-arm64-darwin) + bigdecimal + rake (~> 13.3) + google-protobuf (4.34.1-x86_64-linux-gnu) + bigdecimal + rake (~> 13.3) + http_parser.rb (0.8.1) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-relative-links (0.7.0) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.19.4) + kramdown (2.5.2) + rexml (>= 3.4.4) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.10.0) + logger + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (7.0.5) + rake (13.4.2) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (4.7.0) + rubyzip (2.4.1) + safe_yaml (1.0.5) + sass-embedded (1.99.0-arm64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.99.0-x86_64-linux-gnu) + google-protobuf (~> 4.31) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.6.0) + webrick (1.9.2) + +PLATFORMS + arm64-darwin-23 + x86_64-linux + +DEPENDENCIES + jekyll (~> 4.3) + jekyll-include-cache + jekyll-optional-front-matter + jekyll-relative-links + jekyll-remote-theme + +BUNDLED WITH + 2.4.22 diff --git a/docs/GettingStartedWithSpec-DrivenDev.md b/docs/GettingStartedWithSpec-DrivenDev.md new file mode 120000 index 0000000..81f29ce --- /dev/null +++ b/docs/GettingStartedWithSpec-DrivenDev.md @@ -0,0 +1 @@ +../GettingStartedWithSpec-DrivenDev.md \ No newline at end of file diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..fe59e17 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,58 @@ +title: Spec-Driven Development Workshop +description: A workshop on spec-driven development and lightweight formal methods. +url: "https://adzerk.github.io" +baseurl: "/spec-driven-workshop" +remote_theme: mmistakes/minimal-mistakes@4.26.2 +minimal_mistakes_skin: default + +atom_feed: + hide: true + +plugins: + - jekyll-optional-front-matter + - jekyll-relative-links + - jekyll-include-cache + - jekyll-remote-theme + +optional_front_matter: + remove_originals: true + +relative_links: + enabled: true + collections: false + +kramdown: + input: GFM + auto_ids: true + +defaults: + - scope: + path: "GettingStartedWithSpec-DrivenDev.md" + values: + layout: single + title: "Getting Started with Spec-Driven Development" + hide_page_title: true + toc: true + toc_sticky: true + toc_label: "On this page" + permalink: /guide.html + - scope: + path: "reference.md" + values: + layout: single + title: "Reference" + toc: true + toc_sticky: true + toc_label: "On this page" + permalink: /reference.html + - scope: + path: "index.md" + values: + layout: single + title: "Home" + +exclude: + - Gemfile + - Gemfile.lock + - vendor/ + - _site/ diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml new file mode 100644 index 0000000..67844cd --- /dev/null +++ b/docs/_data/navigation.yml @@ -0,0 +1,7 @@ +main: + - title: "Getting Started" + url: /guide.html + - title: "Reference" + url: /reference.html + - title: "GitHub" + url: https://github.com/adzerk/spec-driven-workshop diff --git a/docs/_includes/head/custom.html b/docs/_includes/head/custom.html new file mode 100644 index 0000000..dd61f64 --- /dev/null +++ b/docs/_includes/head/custom.html @@ -0,0 +1,3 @@ +{% if page.hide_page_title %} + +{% endif %} diff --git a/docs/assets b/docs/assets new file mode 120000 index 0000000..ec2e4be --- /dev/null +++ b/docs/assets @@ -0,0 +1 @@ +../assets \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..5d65ed4 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,12 @@ +--- +layout: single +title: "Home" +permalink: / +--- + +This is a workshop repo designed to help engineers learn about spec-driven development (and lightweight formal methods) through a series of exercises. + +- **[Getting Started with Spec-Driven Development](guide.html)** — the full workshop guide, with exercises. +- **[Reference](reference.html)** — quick summary of the main points, desired outcome, and the tooling support needed for success. + +The source lives at [adzerk/spec-driven-workshop](https://github.com/adzerk/spec-driven-workshop). See the `main-more` branch for additional material. diff --git a/docs/reference.md b/docs/reference.md new file mode 120000 index 0000000..ca3b908 --- /dev/null +++ b/docs/reference.md @@ -0,0 +1 @@ +../reference.md \ No newline at end of file diff --git a/reference.md b/reference.md index d333fda..8c56228 100644 --- a/reference.md +++ b/reference.md @@ -32,4 +32,4 @@ We need to have high confidence and assurance in the artifacts produced by our c * Extended checking with code verifiers and similar tools * Subagents for code-review, testing, and code optimization passes (we’ll cover these in the workshop) -Regardless of the language and runtime of your project, you should have support for each of these critical areas. You also need a [strong sandbox](?tab=t.0#heading=h.1fgtjot5p1vd). \ No newline at end of file +Regardless of the language and runtime of your project, you should have support for each of these critical areas. You also need a [strong sandbox](GettingStartedWithSpec-DrivenDev.md#safety-first-sandboxing). \ No newline at end of file