Add blog categories taxonomy and consolidate tags#19661
Open
jeffmerrick wants to merge 2 commits into
Open
Conversation
Introduce a closed, lint-enforced `categories` axis for blog posts (the "kind of post") alongside the existing curated-but-open `tags` axis and optional `series` axis. - data/blog_categories.yaml: new single source of truth for the 7 allowed category ids; data/blog_tags.yaml: deduplicated canonical tag vocabulary. - scripts/lint/lint-markdown.js: enforce exactly-one (max two) valid category on every content/blog/*/index.md. - Backfill categories on all 788 posts and normalize legacy tags to the lowercase-hyphenated canonical forms (k8s->kubernetes, iac->infrastructure-as-code, pulumi-service->pulumi-cloud, etc.). - Add the Pulumi Copilot series to data/blog_series.yml. - Document the rules in AGENTS.md, BLOGGING.md, the new-blog-post command, and the blog-post archetype. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
Social Media Reviewcontent/blog/cloudflare-first-networking-with-pulumi/index.mdX — PASS(LinkedIn and Bluesky already posted.) content/blog/deploy-a-hermes-agent-with-pulumi/index.mdX — PASS(LinkedIn and Bluesky already posted.) content/blog/end-to-end-databricks-with-pulumi/index.mdX — PASS(LinkedIn and Bluesky already posted.) content/blog/neo-code-reviews/index.mdX — PASSLinkedIn — PASSBluesky — PASSSuggestions (advisory)These are stylistic notes — they don't block the post. cloudflare — X
deploy-a-hermes-agent — X
end-to-end-databricks — X
neo-code-reviews — X
neo-code-reviews — LinkedIn
neo-code-reviews — Bluesky
Updated for commit |
Collaborator
|
Your site preview for commit a1acd96 is ready! 🎉 http://www-testing-pulumi-docs-origin-pr-19661-a1acd963.s3-website.us-west-2.amazonaws.com |
Resolve conflicts: keep both new AGENTS.md sections (blog taxonomy + dark mode) and both new front-matter keys on esc-sync-with-iac (categories + canonical_url). Backfill categories on the two blog posts added on master (deploy-a-hermes-agent-with-pulumi, neo-code-reviews) so they satisfy the new lint rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human Jeff here - bringing categories into the blog and doing some tag cleanup. Totally open for different categories or changes to the names.
This is just a background change, the categories aren't displayed anywhere yet - that will happen in a larger blog UI revamp.
Resolves: #19030
What & why
Introduces a closed, lint-enforced
categoriesaxis for blog posts (the kind of post) alongside the existing curated-but-opentagsaxis and the optionalseriesaxis. This gives blog content a consistent, queryable taxonomy and prevents the tag sprawl/near-duplicate drift we've accumulated over time.Changes
New source-of-truth data files
data/blog_categories.yaml— the 7 allowed category ids (agentic-infrastructure,product-launches,engineering,tutorials,best-practices,security-governance,community), with descriptions and selection hints.data/blog_tags.yaml— the deduplicated canonical tag vocabulary.Enforcement
scripts/lint/lint-markdown.js—make lintnow fails anycontent/blog/*/index.mdwhosecategoriesis missing, empty, invalid, or lists more than two values. Section/list/tag_index.mdpages are excluded.Content backfill
k8s→kubernetes,iac→infrastructure-as-code,pulumi-service→pulumi-cloud,.net→dotnet, etc.).data/blog_series.yml(6 member posts).Docs
AGENTS.md,BLOGGING.md, thenew-blog-postcommand, and the blog-post archetype.Verification
node ./scripts/lint/lint-markdown.js content/blog→ 788 files parsed, 0 errors.🤖 Generated with Claude Code