Skip to content

Commit d0d6aa7

Browse files
committed
Generate public, CLAUDE.md but not spec-kit
1 parent 2691bd7 commit d0d6aa7

22 files changed

Lines changed: 378 additions & 234 deletions

File tree

CLAUDE.md

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
This is a Hugo-based static website focused on Spec Coding, Spec Driven Development, and Agentic AI Software Development Tools. The site is published to GitHub Pages and uses the hugo-clarity theme.
8+
9+
**Site URLs:**
10+
- Production: https://specoding.com/
11+
- Alternate: https://www.specoding.com
12+
13+
**Author:** Tony Kay (@cloud_assembler on X)
14+
15+
## Hugo Commands
16+
17+
### Development
18+
```bash
19+
# Start local development server with drafts
20+
hugo server -D
21+
22+
# Start server without drafts
23+
hugo server
24+
25+
# Start server and watch for changes
26+
hugo server --watch
27+
```
28+
29+
### Building
30+
```bash
31+
# Build the site (output to ./public)
32+
hugo
33+
34+
# Build with garbage collection and minification (production-ready)
35+
hugo --gc --minify
36+
37+
# Build for specific baseURL
38+
hugo --baseURL "https://specoding.com/"
39+
```
40+
41+
### Content Management
42+
```bash
43+
# Create new post using default archetype
44+
hugo new content/post/my-new-post.md
45+
46+
# Create content with specific archetype
47+
hugo new --kind post content/post/my-post.md
48+
```
49+
50+
## Architecture
51+
52+
### Configuration Structure
53+
54+
The site uses Hugo's modular configuration approach with split config files in `config/_default/`:
55+
56+
- **hugo.toml**: Base Hugo settings, theme selection, taxonomies, outputs
57+
- **config.toml**: Site metadata, baseURL, security settings, cache configuration
58+
- **params.toml**: Theme-specific parameters (hugo-clarity settings), analytics, author info
59+
- **languages.toml**: Language configuration (currently English only, title: "AI Assembler")
60+
- **menus/menu.en.toml**: Navigation menu definitions
61+
62+
**Important Configuration Notes:**
63+
- Theme is loaded as a git submodule at `themes/hugo-clarity`
64+
- `baseurl` must include trailing slash for share icons to work properly
65+
- Hugo caches images to `:cacheDir/images` for GitHub Pages compatibility
66+
- Extended Hugo version required for Dart Sass compilation
67+
68+
### Theme: Hugo Clarity
69+
70+
The site uses the hugo-clarity theme (https://github.com/chipzoller/hugo-clarity) installed as a git submodule. Key theme settings:
71+
72+
- **Page Bundles**: Enabled (`usePageBundles = true`) - assets grouped with posts as leaf bundles
73+
- **Search**: Enabled with JSON output format
74+
- **Code Display**: Max 7 lines with line numbers enabled, scrollable/expandable
75+
- **Main Sections**: Posts located in `content/post/`
76+
- **Logo**: `images/spec-coding-logo.png`
77+
- **Fallback OG Image**: `images/thumbnail.png`
78+
79+
### Directory Structure
80+
81+
```
82+
.
83+
├── archetypes/ # Content templates for hugo new command
84+
├── assets/ # Source files processed by Hugo Pipes (currently empty)
85+
├── config/_default/ # Modular configuration files
86+
├── content/ # Site content (posts, pages) - currently minimal
87+
│ └── images/ # Content images
88+
├── data/ # Data files for site generation
89+
├── i18n/ # Internationalization files
90+
├── layouts/ # Custom layout overrides (currently empty, using theme defaults)
91+
├── public/ # Generated site output (git-tracked for GitHub Pages)
92+
├── resources/ # Cached processed resources
93+
├── static/ # Static files copied as-is to output
94+
└── themes/hugo-clarity/ # Theme git submodule
95+
```
96+
97+
### Content Organization
98+
99+
- **Posts**: Located in `content/post/` directory
100+
- **Taxonomies**: Categories, tags, series, and authors
101+
- **Page Bundles**: Content can be organized as leaf bundles with co-located assets
102+
- **Drafts**: Marked with `draft = true` in front matter
103+
104+
### Deployment
105+
106+
**GitHub Actions Workflow** (`.github/workflows/hugo.yaml`):
107+
- Triggers on push to `main` branch or manual workflow dispatch
108+
- Environment versions:
109+
- Hugo: 0.151.0 (extended)
110+
- Dart Sass: 1.93.2
111+
- Go: 1.25.1
112+
- Node.js: 22.18.0
113+
- Build process: Checkout with submodules → Install dependencies → Build with `--gc --minify` → Deploy to GitHub Pages
114+
- Uses Hugo cache for faster builds
115+
- Deploys `./public` directory to GitHub Pages
116+
117+
### Spec-Kit Integration
118+
119+
This project uses Spec-Kit for specification-driven development with custom slash commands in `.claude/commands/`:
120+
121+
- `/speckit.specify` - Create/update feature specifications
122+
- `/speckit.plan` - Execute implementation planning workflow
123+
- `/speckit.tasks` - Generate actionable dependency-ordered tasks
124+
- `/speckit.implement` - Execute implementation plan
125+
- `/speckit.analyze` - Cross-artifact consistency analysis
126+
- `/speckit.clarify` - Identify underspecified areas
127+
- `/speckit.checklist` - Generate custom feature checklists
128+
- `/speckit.constitution` - Manage project constitution
129+
130+
Templates and scripts located in `.specify/`.
131+
132+
## Working with Themes
133+
134+
The hugo-clarity theme is a git submodule. To update the theme:
135+
136+
```bash
137+
cd themes/hugo-clarity
138+
git pull origin main
139+
cd ../..
140+
git add themes/hugo-clarity
141+
git commit -m "Update hugo-clarity theme"
142+
```
143+
144+
**Customization Approach:**
145+
- Override theme templates by creating matching files in `layouts/`
146+
- Override theme assets by creating matching files in `assets/`
147+
- Theme-specific settings controlled via `config/_default/params.toml`
148+
149+
## Content Guidelines
150+
151+
When creating new posts:
152+
1. Use `hugo new content/post/post-name.md` to ensure proper front matter
153+
2. Include these front matter fields: `title`, `date`, `draft`, `tags`, `categories`
154+
3. Set `draft = false` when ready to publish
155+
4. Consider using page bundles for posts with multiple images or assets
156+
157+
## Local Development Notes
158+
159+
- Local Hugo version: v0.151.0+extended+withdeploy (darwin/arm64, installed via brew)
160+
- The `./public` directory is tracked in git for GitHub Pages deployment
161+
- Always test builds locally with `hugo --gc --minify` before pushing
162+
- Check that submodules are initialized: `git submodule update --init --recursive`

config/_default/config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
baseurl = "https://specoding.com"
1+
baseurl = "https://www.specoding.com"
22
title = "Spec Coding"
33
languageCode = "en-us"
44
# theme = "mainroad"
@@ -30,7 +30,7 @@ allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^git$', '^npx$', '^postcss$', '^
3030

3131
[Params]
3232
subtitle = "Tony Kay's Blog on AI Engineering, HybridCloud and Container Automation" # Subtitle of your site
33-
description = "An AI Engineering, Automation, and Cloud Centric personal blog" # Description of your site
33+
description = "All things Spec Coding, Spec Driven Development, Vibers welcome!" # Description of your site
3434
opengraph = true
3535
twitter_cards = false
3636
readmore = false # Show "Read more" button in list if true

config/_default/hugo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# set `baseurl` to your root domain
22
# if you set it to "/" share icons won't work properly on production
3-
baseurl = "https://specoding.com/" # Include trailing slash
3+
baseurl = "https://www.specoding.com/" # Include trailing slash
44
# title = "Clarity" # Edit directly from config/_default/languages.toml # alternatively, uncomment this and remove `title` entry from the aforemention file.
5-
copyright = "Copyright © 2008–2025, Steve Francia and the Hugo Authors; all rights reserved."
5+
copyright = "Copyright © 2025, Tony Kay and the Hugo Authors; all rights reserved."
66
# canonifyurls = true
77

88
theme = "hugo-clarity"

public/404.html

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,44 @@
66

77

88
>
9-
<head>
9+
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
1010
<title>404 Page not found | AI Assembler</title>
1111
<meta charset="utf-8">
1212

1313
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
1414
<meta http-equiv="X-UA-Compatible" content="IE=edge">
1515

1616

17-
18-
19-
2017
<meta property="og:locale" content="en" />
2118

2219
<meta property="og:type" content="article">
2320
<meta name="description" content="" />
2421
<meta name="twitter:card" content="summary" />
2522
<meta name="twitter:creator" content="">
2623
<meta name="twitter:title" content="404 Page not found" />
27-
<meta name="twitter:image" content="https://specoding.com/images/thumbnail.png"/>
28-
<meta property="og:url" content="https://specoding.com/404.html" />
24+
<meta name="twitter:image" content="http://localhost:1313/images/thumbnail.png"/>
25+
<meta property="og:url" content="http://localhost:1313/404.html" />
2926
<meta property="og:title" content="404 Page not found" />
3027
<meta property="og:description" content="" />
31-
<meta property="og:image" content="https://specoding.com/images/thumbnail.png" />
28+
<meta property="og:image" content="http://localhost:1313/images/thumbnail.png" />
3229

33-
<link rel="apple-touch-icon" sizes="180x180" href="https://specoding.com/icons/apple-touch-icon.png">
34-
<link rel="icon" type="image/png" sizes="32x32" href="https://specoding.com/icons/favicon-32x32.png">
35-
<link rel="manifest" href="https://specoding.com/icons/site.webmanifest">
30+
<link rel="apple-touch-icon" sizes="180x180" href="http://localhost:1313/icons/apple-touch-icon.png">
31+
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/icons/favicon-32x32.png">
32+
<link rel="manifest" href="http://localhost:1313/icons/site.webmanifest">
3633

37-
<link rel="canonical" href="https://specoding.com/404.html">
34+
<link rel="canonical" href="http://localhost:1313/404.html">
3835

3936

4037

41-
<link rel="preload" href="https://specoding.com/css/styles.dc38388a8f0b890e788bd3a99b7495d14e7d5ac4359ed3b49abeb778497863b284ad4cc7e496ef58c84139295f9bafed82f5a41345eda86bd2d429cccb7c2596.css" integrity = "sha512-3Dg4io8LiQ54i9Opm3SV0U59WsQ1ntO0mr63eEl4Y7KErUzH5JbvWMhBOSlfm6/tgvWkE0XtqGvS1CnMy3wllg==" as="style" crossorigin="anonymous">
38+
<link rel="preload" href="http://localhost:1313/css/styles.dc38388a8f0b890e788bd3a99b7495d14e7d5ac4359ed3b49abeb778497863b284ad4cc7e496ef58c84139295f9bafed82f5a41345eda86bd2d429cccb7c2596.css" integrity = "sha512-3Dg4io8LiQ54i9Opm3SV0U59WsQ1ntO0mr63eEl4Y7KErUzH5JbvWMhBOSlfm6/tgvWkE0XtqGvS1CnMy3wllg==" as="style" crossorigin="anonymous">
4239

4340

4441

45-
<link rel="preload" href="https://specoding.com/en/js/bundle.2ba65590aa69cbf63927f6b3b0e13b855a4ec783bda2021e83399f13368e65a68f08740e78d09759d156c4aef3d51e06d688122e03aee391709bfa6afec628a1.js" as="script" integrity=
46-
"sha512-K6ZVkKppy/Y5J/azsOE7hVpOx4O9ogIegzmfEzaOZaaPCHQOeNCXWdFWxK7z1R4G1ogSLgOu45Fwm/pq/sYooQ==" crossorigin="anonymous">
42+
<link rel="preload" href="http://localhost:1313/en/js/bundle.467a54cbd5cb9856ccda4eb3a0d0e8cc7c99ffe68cee9df42a248adefa4b86f9f690bebc5aa9bb53b2bb1015fc8da3f7426cc4eb31bcc5cee122925639ee79bc.js" as="script" integrity=
43+
"sha512-RnpUy9XLmFbM2k6zoNDozHyZ/&#43;aM7p30KiSK3vpLhvn2kL68Wqm7U7K7EBX8jaP3QmzE6zG8xc7hIpJWOe55vA==" crossorigin="anonymous">
4744

4845

49-
<link rel="stylesheet" type="text/css" href="https://specoding.com/css/styles.dc38388a8f0b890e788bd3a99b7495d14e7d5ac4359ed3b49abeb778497863b284ad4cc7e496ef58c84139295f9bafed82f5a41345eda86bd2d429cccb7c2596.css" integrity="sha512-3Dg4io8LiQ54i9Opm3SV0U59WsQ1ntO0mr63eEl4Y7KErUzH5JbvWMhBOSlfm6/tgvWkE0XtqGvS1CnMy3wllg==" crossorigin="anonymous">
46+
<link rel="stylesheet" type="text/css" href="http://localhost:1313/css/styles.dc38388a8f0b890e788bd3a99b7495d14e7d5ac4359ed3b49abeb778497863b284ad4cc7e496ef58c84139295f9bafed82f5a41345eda86bd2d429cccb7c2596.css" integrity="sha512-3Dg4io8LiQ54i9Opm3SV0U59WsQ1ntO0mr63eEl4Y7KErUzH5JbvWMhBOSlfm6/tgvWkE0XtqGvS1CnMy3wllg==" crossorigin="anonymous">
5047

5148
</head>
5249
<body
@@ -57,8 +54,8 @@
5754
>
5855

5956
<header class="nav_header" >
60-
<nav class="nav"><a href='https://specoding.com/' class="nav_brand nav_item" title="AI Assembler">
61-
<img src="https://specoding.com/images/spec-coding-logo.png" class="logo" alt="AI Assembler">
57+
<nav class="nav"><a href='http://localhost:1313/' class="nav_brand nav_item" title="AI Assembler">
58+
<img src="http://localhost:1313/images/spec-coding-logo.png" class="logo" alt="AI Assembler">
6259
<div class="nav_close">
6360
<div><svg class="icon">
6461
<title>open-menu</title>
@@ -79,25 +76,25 @@
7976

8077

8178
<div class="nav_parent">
82-
<a href="https://specoding.com/" class="nav_item" title="Home">Home </a>
79+
<a href="http://localhost:1313/" class="nav_item" title="Home">Home </a>
8380
</div>
8481
<div class="nav_parent">
85-
<a href="https://specoding.com/post/rich-content/" class="nav_item" title="Spec Coding Tooling">Spec Coding Tooling <img src='https://specoding.com/icons/caret-icon.svg' alt="icon" class="nav_icon"></a>
82+
<a href="http://localhost:1313/post/rich-content/" class="nav_item" title="Spec Coding Tooling">Spec Coding Tooling <img src='http://localhost:1313/icons/caret-icon.svg' alt="icon" class="nav_icon"></a>
8683
<div class="nav_sub">
8784
<span class="nav_child"></span>
88-
<a href="https://specoding.com/post/rich-content/" class="nav_child nav_item" title="Kiro">Kiro</a>
89-
<a href="https://specoding.com/post/rich-content/" class="nav_child nav_item" title="openspec">openspec</a>
90-
<a href="https://specoding.com/post/rich-content/" class="nav_child nav_item" title="spec-kit">spec-kit</a>
85+
<a href="http://localhost:1313/post/rich-content/" class="nav_child nav_item" title="Kiro">Kiro</a>
86+
<a href="http://localhost:1313/post/rich-content/" class="nav_child nav_item" title="openspec">openspec</a>
87+
<a href="http://localhost:1313/post/rich-content/" class="nav_child nav_item" title="spec-kit">spec-kit</a>
9188
</div>
9289
</div>
9390
<div class="nav_parent">
94-
<a href="https://specoding.com/post/claude-code/" class="nav_item" title="Claude Code">Claude Code </a>
91+
<a href="http://localhost:1313/post/claude-code/" class="nav_item" title="Claude Code">Claude Code </a>
9592
</div>
9693
<div class="nav_parent">
97-
<a href="https://specoding.com/resources/" class="nav_item" title="Resources">Resources </a>
94+
<a href="http://localhost:1313/resources/" class="nav_item" title="Resources">Resources </a>
9895
</div>
9996
<div class="nav_parent">
100-
<a href="https://specoding.com/about/" class="nav_item" title="About">About </a>
97+
<a href="http://localhost:1313/about/" class="nav_item" title="About">About </a>
10198
</div>
10299

103100
<div class='follow'>
@@ -123,7 +120,7 @@
123120

124121
</a>
125122

126-
<a href="https://specoding.com/index.xml">
123+
<a href="http://localhost:1313/index.xml">
127124
<svg class="icon">
128125
<title>rss</title>
129126
<use xlink:href="#rss"></use>
@@ -240,8 +237,8 @@ <h1>Lost</h1>
240237

241238
<footer class="footer">
242239
<div class="footer_inner wrap pale">
243-
<img src='https://specoding.com/icons/apple-touch-icon.png' class="icon icon_2 transparent" alt="Copyright © 2008–2025, Steve Francia and the Hugo Authors; all rights reserved.">
244-
<p>Copyright&nbsp;2025-&nbsp;<span class="year"></span>&nbsp;COPYRIGHT © 2008–2025, STEVE FRANCIA AND THE HUGO AUTHORS; ALL RIGHTS RESERVED.. All Rights Reserved</p><a class="to_top" href="#documentTop">
240+
<img src='http://localhost:1313/icons/apple-touch-icon.png' class="icon icon_2 transparent" alt="Copyright © 2025, Tony Kay and the Hugo Authors; all rights reserved.">
241+
<p>Copyright&nbsp;2025-&nbsp;<span class="year"></span>&nbsp;COPYRIGHT © 2025, TONY KAY AND THE HUGO AUTHORS; ALL RIGHTS RESERVED.. All Rights Reserved</p><a class="to_top" href="#documentTop">
245242
<svg class="icon">
246243
<title>to-top</title>
247244
<use xlink:href="#to-top"></use>
@@ -252,9 +249,9 @@ <h1>Lost</h1>
252249
</div>
253250
</footer>
254251

255-
<script type="text/javascript" src="https://specoding.com/en/js/bundle.2ba65590aa69cbf63927f6b3b0e13b855a4ec783bda2021e83399f13368e65a68f08740e78d09759d156c4aef3d51e06d688122e03aee391709bfa6afec628a1.js" integrity="sha512-K6ZVkKppy/Y5J/azsOE7hVpOx4O9ogIegzmfEzaOZaaPCHQOeNCXWdFWxK7z1R4G1ogSLgOu45Fwm/pq/sYooQ==" crossorigin="anonymous"></script>
252+
<script type="text/javascript" src="http://localhost:1313/en/js/bundle.467a54cbd5cb9856ccda4eb3a0d0e8cc7c99ffe68cee9df42a248adefa4b86f9f690bebc5aa9bb53b2bb1015fc8da3f7426cc4eb31bcc5cee122925639ee79bc.js" integrity="sha512-RnpUy9XLmFbM2k6zoNDozHyZ/&#43;aM7p30KiSK3vpLhvn2kL68Wqm7U7K7EBX8jaP3QmzE6zG8xc7hIpJWOe55vA==" crossorigin="anonymous"></script>
256253

257-
<script src="https://specoding.com/js/search.min.4c2b0421d128bbd7c43fc7d662fb5dfd8e439c60ee92c900a26d72d9c3271d2256f5bac9f6f919cddfd55101e9272898716cbb3381b4360bf43a66a5f7664f54.js"></script>
254+
<script src="http://localhost:1313/js/search.min.4c2b0421d128bbd7c43fc7d662fb5dfd8e439c60ee92c900a26d72d9c3271d2256f5bac9f6f919cddfd55101e9272898716cbb3381b4360bf43a66a5f7664f54.js"></script>
258255

259256
</body>
260257
</html>

0 commit comments

Comments
 (0)