diff --git a/.atmos.d/README.md b/.atmos.d/README.md
index 8a8cab7f21..e017faa225 100644
--- a/.atmos.d/README.md
+++ b/.atmos.d/README.md
@@ -15,4 +15,4 @@ The `dev.yaml` file defines development workflow commands that help maintain cod
We use Atmos custom commands for our development workflow as a form of "dogfooding" - using our own tool to manage our development process. This ensures we experience the same workflows our users do and helps us identify areas for improvement.
-For more information on custom commands, see the [Atmos Custom Commands documentation](https://atmos.tools/core-concepts/custom-commands/).
+For more information on custom commands, see the [Atmos Custom Commands documentation](https://atmos.tools/cli/configuration/commands).
diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml
new file mode 100644
index 0000000000..23fc8b10f1
--- /dev/null
+++ b/.github/workflows/link-check.yml
@@ -0,0 +1,33 @@
+name: Link Check
+
+on:
+ pull_request:
+ paths:
+ - '**.md'
+ - '!website/**'
+ - 'lychee.toml'
+ push:
+ branches: [main]
+ paths:
+ - '**.md'
+ - '!website/**'
+ - 'lychee.toml'
+ workflow_dispatch:
+
+jobs:
+ link-check:
+ name: Check Markdown Links
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Check links with lychee
+ uses: lycheeverse/lychee-action@v2
+ with:
+ args: --config lychee.toml --root-dir ${{ github.workspace }} '**/*.md'
+ fail: true
+ jobSummary: true
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/CLAUDE.md b/CLAUDE.md
index e5cd35c282..6e92dbbcce 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -310,7 +310,7 @@ Reply to threads: Use `gh api graphql` with `addPullRequestReviewThreadReply`
- Use definition lists `
` instead of tables for arguments and flags
- Follow Docusaurus conventions from existing files
- File location: `website/docs/cli/commands//.mdx`
-- Link to core concepts using `/core-concepts/` paths
+- Link to documentation using current URL paths (e.g., `/stacks`, `/components`, `/cli/configuration`)
- Include purpose note and help screengrab
- Use consistent section ordering: Usage → Examples → Arguments → Flags
diff --git a/Makefile b/Makefile
index ba92bf1a97..0b12aeb8fb 100644
--- a/Makefile
+++ b/Makefile
@@ -119,4 +119,9 @@ generate-mocks:
@go generate ./pkg/http/...
@echo "Mocks regenerated successfully"
-.PHONY: readme lint lintroller gomodcheck build version build-linux build-windows build-macos deps version-linux version-windows version-macos testacc testacc-cover testacc-coverage test-short test-short-cover generate-mocks
+# Check markdown links (requires lychee: brew install lychee)
+link-check:
+ @command -v lychee >/dev/null 2>&1 || { echo "Install lychee: brew install lychee"; exit 1; }
+ lychee --config lychee.toml --root-dir "$(CURDIR)" '**/*.md'
+
+.PHONY: readme lint lintroller gomodcheck build version build-linux build-windows build-macos deps version-linux version-windows version-macos testacc testacc-cover testacc-coverage test-short test-short-cover generate-mocks link-check
diff --git a/README.md b/README.md
index 076ae70e49..f215ae73bc 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
Atmos is a framework for orchestrating and operating infrastructure workflows across multiple cloud and DevOps toolchains.
-## Use Atmos to break your architecture into reusable [Components](https://atmos.tools/core-concepts/components) that you implement using [Terraform "root modules"](https://atmos.tools/core-concepts/components/terraform). Then tie everything together using [Stack](https://atmos.tools/core-concepts/stacks) configurations defined in YAML.
+## Use Atmos to break your architecture into reusable [Components](https://atmos.tools/components) that you implement using [Terraform "root modules"](https://atmos.tools/components/terraform). Then tie everything together using [Stack](https://atmos.tools/stacks) configurations defined in YAML.
Atmos can change how you think about the Terraform code you write to build your infrastructure. Atmos is a framework that simplifies complex cloud architectures and DevOps workflows into intuitive CLI commands.
Its strength in managing DRY configurations at scale for Terraform and is supported by robust design patterns, comprehensive documentation, and a passionate community, making it a versatile tool for both startups and enterprises.
@@ -82,11 +82,11 @@ indispensable asset for managing complex infrastructures with confidence.
- [**Terminal UI**](https://atmos.tools/cli) Polished interface for easier interaction with Terraform, workflows, and commands.
- [**Native Terraform Support:**](https://atmos.tools/cli/commands/terraform/usage) Orchestration, backend generation, varfile generation, ensuring compatibility with vanilla Terraform.
-- [**Stacks:**](https://atmos.tools/core-concepts/stacks) Powerful abstraction layer defined in YAML for orchestrating and deploying components.
-- [**Components:**](https://atmos.tools/core-concepts/components) A generic abstraction for deployable units, such as Terraform "root" modules.
-- [**Vendoring:**](https://atmos.tools/core-concepts/vendor) Pulls dependencies from remote sources, supporting immutable infrastructure practices.
-- [**Custom Commands:**](https://atmos.tools/core-concepts/custom-commands) Extends Atmos's functionality, allowing integration of any command with stack configurations.
-- [**Workflow Orchestration:**](https://atmos.tools/core-concepts/workflows) Comprehensive support for managing the lifecycle of cloud infrastructure from initiation to maintenance.
+- [**Stacks:**](https://atmos.tools/stacks) Powerful abstraction layer defined in YAML for orchestrating and deploying components.
+- [**Components:**](https://atmos.tools/components) A generic abstraction for deployable units, such as Terraform "root" modules.
+- [**Vendoring:**](https://atmos.tools/vendor) Pulls dependencies from remote sources, supporting immutable infrastructure practices.
+- [**Custom Commands:**](https://atmos.tools/cli/configuration/commands) Extends Atmos's functionality, allowing integration of any command with stack configurations.
+- [**Workflow Orchestration:**](https://atmos.tools/workflows) Comprehensive support for managing the lifecycle of cloud infrastructure from initiation to maintenance.
See [all features of Atmos](https://atmos.tools/features).
@@ -103,12 +103,12 @@ strength in the cloud infrastructure and DevOps domains:
Simply define a baseline tenant configuration once, and then seamlessly onboard new tenants by reusing this baseline through pure
configuration, bypassing the need for further code development.
- **Efficient Multi-Region Deployments:** Atmos facilitates streamlined multi-region deployments by enabling businesses to define baseline
- configurations with [stacks](https://atmos.tools/core-concepts/stacks/) and extend them across regions with DRY principles through
- [imports](https://atmos.tools/core-concepts/stacks/imports) and [inheritance](https://atmos.tools/core-concepts/stacks/inheritance).
+ configurations with [stacks](https://atmos.tools/stacks) and extend them across regions with DRY principles through
+ [imports](https://atmos.tools/stacks/imports) and [inheritance](https://atmos.tools/howto/inheritance).
- **Compliant Infrastructure for Regulated Industries:** Atmos empowers DevOps and SecOps teams to create vetted configurations that comply
with SOC2, HIPAA, HITRUST, PCI, and other regulatory standards. These configurations can then be efficiently shared and reused across the
- organization via [service catalogs](https://atmos.tools/core-concepts/stacks/catalogs), [component libraries](https://atmos.tools/core-concepts/components/library),
- [vendoring](https://atmos.tools/core-concepts/vendor), and [OPA policies](https://atmos.tools/core-concepts/validate/opa),
+ organization via [service catalogs](https://atmos.tools/howto/catalogs), [component libraries](https://atmos.tools/components),
+ [vendoring](https://atmos.tools/vendor), and [OPA policies](https://atmos.tools/validation/opa),
simplifying the process of achieving and maintaining rigorous compliance.
- **Empowering Teams with Self-Service Infrastructure:** Allows teams to manage their infrastructure needs independently, using
predefined templates and policies.
diff --git a/README.yaml b/README.yaml
index b2ae0355fd..131e4c0743 100644
--- a/README.yaml
+++ b/README.yaml
@@ -41,7 +41,7 @@ screenshots:
description: |-
Atmos is a framework for orchestrating and operating infrastructure workflows across multiple cloud and DevOps toolchains.
- ## Use Atmos to break your architecture into reusable [Components](https://atmos.tools/core-concepts/components) that you implement using [Terraform "root modules"](https://atmos.tools/core-concepts/components/terraform). Then tie everything together using [Stack](https://atmos.tools/core-concepts/stacks) configurations defined in YAML.
+ ## Use Atmos to break your architecture into reusable [Components](https://atmos.tools/components) that you implement using [Terraform "root modules"](https://atmos.tools/components/terraform). Then tie everything together using [Stack](https://atmos.tools/stacks) configurations defined in YAML.
Atmos can change how you think about the Terraform code you write to build your infrastructure. Atmos is a framework that simplifies complex cloud architectures and DevOps workflows into intuitive CLI commands.
Its strength in managing DRY configurations at scale for Terraform and is supported by robust design patterns, comprehensive documentation, and a passionate community, making it a versatile tool for both startups and enterprises.
@@ -86,11 +86,11 @@ introduction: |-
- [**Terminal UI**](https://atmos.tools/cli) Polished interface for easier interaction with Terraform, workflows, and commands.
- [**Native Terraform Support:**](https://atmos.tools/cli/commands/terraform/usage) Orchestration, backend generation, varfile generation, ensuring compatibility with vanilla Terraform.
- - [**Stacks:**](https://atmos.tools/core-concepts/stacks) Powerful abstraction layer defined in YAML for orchestrating and deploying components.
- - [**Components:**](https://atmos.tools/core-concepts/components) A generic abstraction for deployable units, such as Terraform "root" modules.
- - [**Vendoring:**](https://atmos.tools/core-concepts/vendor) Pulls dependencies from remote sources, supporting immutable infrastructure practices.
- - [**Custom Commands:**](https://atmos.tools/core-concepts/custom-commands) Extends Atmos's functionality, allowing integration of any command with stack configurations.
- - [**Workflow Orchestration:**](https://atmos.tools/core-concepts/workflows) Comprehensive support for managing the lifecycle of cloud infrastructure from initiation to maintenance.
+ - [**Stacks:**](https://atmos.tools/stacks) Powerful abstraction layer defined in YAML for orchestrating and deploying components.
+ - [**Components:**](https://atmos.tools/components) A generic abstraction for deployable units, such as Terraform "root" modules.
+ - [**Vendoring:**](https://atmos.tools/vendor) Pulls dependencies from remote sources, supporting immutable infrastructure practices.
+ - [**Custom Commands:**](https://atmos.tools/cli/configuration/commands) Extends Atmos's functionality, allowing integration of any command with stack configurations.
+ - [**Workflow Orchestration:**](https://atmos.tools/workflows) Comprehensive support for managing the lifecycle of cloud infrastructure from initiation to maintenance.
See [all features of Atmos](https://atmos.tools/features).
@@ -107,12 +107,12 @@ introduction: |-
Simply define a baseline tenant configuration once, and then seamlessly onboard new tenants by reusing this baseline through pure
configuration, bypassing the need for further code development.
- **Efficient Multi-Region Deployments:** Atmos facilitates streamlined multi-region deployments by enabling businesses to define baseline
- configurations with [stacks](https://atmos.tools/core-concepts/stacks/) and extend them across regions with DRY principles through
- [imports](https://atmos.tools/core-concepts/stacks/imports) and [inheritance](https://atmos.tools/core-concepts/stacks/inheritance).
+ configurations with [stacks](https://atmos.tools/stacks) and extend them across regions with DRY principles through
+ [imports](https://atmos.tools/stacks/imports) and [inheritance](https://atmos.tools/howto/inheritance).
- **Compliant Infrastructure for Regulated Industries:** Atmos empowers DevOps and SecOps teams to create vetted configurations that comply
with SOC2, HIPAA, HITRUST, PCI, and other regulatory standards. These configurations can then be efficiently shared and reused across the
- organization via [service catalogs](https://atmos.tools/core-concepts/stacks/catalogs), [component libraries](https://atmos.tools/core-concepts/components/library),
- [vendoring](https://atmos.tools/core-concepts/vendor), and [OPA policies](https://atmos.tools/core-concepts/validate/opa),
+ organization via [service catalogs](https://atmos.tools/howto/catalogs), [component libraries](https://atmos.tools/components),
+ [vendoring](https://atmos.tools/vendor), and [OPA policies](https://atmos.tools/validation/opa),
simplifying the process of achieving and maintaining rigorous compliance.
- **Empowering Teams with Self-Service Infrastructure:** Allows teams to manage their infrastructure needs independently, using
predefined templates and policies.
diff --git a/cmd/markdown/getting_started.md b/cmd/markdown/getting_started.md
index b0a074abf1..98a30c8c8a 100644
--- a/cmd/markdown/getting_started.md
+++ b/cmd/markdown/getting_started.md
@@ -4,8 +4,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:**
-**Atmos Components:**
+**Atmos Components:**
-**Atmos Stacks:**
+**Atmos Stacks:**
**Quick Start:**
diff --git a/docs/circular-dependency-detection.md b/docs/circular-dependency-detection.md
index 675bb7ce66..de9a538aea 100644
--- a/docs/circular-dependency-detection.md
+++ b/docs/circular-dependency-detection.md
@@ -236,4 +236,4 @@ See `internal/exec/yaml_func_circular_deps_test.go` for comprehensive test examp
- [PRD: Circular Dependency Detection](prd/circular-dependency-detection.md)
- [Error Handling Strategy](prd/error-handling-strategy.md)
-- [Testing Strategy](prd/testing-strategy.md)
+- [Testability Refactoring Strategy](prd/testability-refactoring-strategy.md)
diff --git a/docs/developing-atmos-commands.md b/docs/developing-atmos-commands.md
index 0bdbfb7d61..00b9dfb0ea 100644
--- a/docs/developing-atmos-commands.md
+++ b/docs/developing-atmos-commands.md
@@ -976,4 +976,4 @@ See these commands for reference implementations:
- [Flag Handler Documentation](../.claude/agents/flag-handler.md) - **Complete flag handler guide**
- [Command Registry Pattern PRD](prd/command-registry-pattern.md)
- [Cobra Documentation](https://github.com/spf13/cobra)
-- [Atmos Custom Commands](/core-concepts/custom-commands)
+- [Atmos Custom Commands](https://atmos.tools/cli/configuration/commands)
diff --git a/docs/development.md b/docs/development.md
index 29eacd1ad6..4bd8866aed 100644
--- a/docs/development.md
+++ b/docs/development.md
@@ -23,7 +23,7 @@ This guide covers the development workflow for contributing to Atmos.
## Development Workflow
-We use Atmos custom commands for development (dogfooding our own tool). This ensures we experience the same workflows our users do. See [Atmos Custom Commands](https://atmos.tools/core-concepts/custom-commands/) for more details.
+We use Atmos custom commands for development (dogfooding our own tool). This ensures we experience the same workflows our users do. See [Atmos Custom Commands](https://atmos.tools/cli/configuration/commands) for more details.
### Available Commands
diff --git a/docs/logging.md b/docs/logging.md
index f56ab6ad41..c4a4210977 100644
--- a/docs/logging.md
+++ b/docs/logging.md
@@ -486,6 +486,6 @@ logs:
## Structured and Semantic Logging
-Structured logs record events as key/value pairs so machines and humans can parse them. Semantic logging standardizes those keys so logs can be understood across tools and teams. Atmos uses the [Charm Logger](https://charm.sh/blog/the-charm-logger/) for this purpose.
+Structured logs record events as key/value pairs so machines and humans can parse them. Semantic logging standardizes those keys so logs can be understood across tools and teams. Atmos uses the [Charm Logger](https://charm.land/blog/the-charm-logger/) for this purpose.
See [structured-logging.md](structured-logging.md) for detailed guidance and examples.
diff --git a/docs/markdown-styles.md b/docs/markdown-styles.md
index 5707638fec..5256745231 100644
--- a/docs/markdown-styles.md
+++ b/docs/markdown-styles.md
@@ -118,7 +118,7 @@ All standard GFM syntax is also supported:
- **Bold**: `**text**`
- *Italic*: `*text*`
- `Inline code`: `` `code` ``
-- [Links](url): `[text](url)`
+- [Links](https://example.com): `[text](url)`
- Headings: `# H1`, `## H2`, etc.
- Lists: `- item` or `1. item`
- Blockquotes: `> text`
diff --git a/docs/prd/atmos-error-implementation-plan.md b/docs/prd/atmos-error-implementation-plan.md
index 9d488c0750..c1a43cb653 100644
--- a/docs/prd/atmos-error-implementation-plan.md
+++ b/docs/prd/atmos-error-implementation-plan.md
@@ -446,7 +446,7 @@ docs/
errors.md # Developer how-to guide (NEW)
prd/
- atmos-error-handling.md # Architecture PRD (NEW)
+ error-handling.md # Architecture PRD (NEW)
atmos-error-implementation-plan.md # This file
error-handling-strategy.md # Updated
diff --git a/docs/prd/atmos-profiles.md b/docs/prd/atmos-profiles.md
index 2f5317c1cd..98a81599fe 100644
--- a/docs/prd/atmos-profiles.md
+++ b/docs/prd/atmos-profiles.md
@@ -1815,4 +1815,4 @@ atmos profile validate ci
- [XDG Base Directory Specification PRD](./xdg-base-directory-specification.md) - XDG support for user-global profiles
- [Atmos Configuration Documentation](https://atmos.tools/cli/configuration)
- [Viper Configuration Library](https://github.com/spf13/viper)
-- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
+- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)
diff --git a/docs/prd/auth-architecture-linter-rules.md b/docs/prd/auth-architecture-linter-rules.md
index 4e50d81204..6884ad5f85 100644
--- a/docs/prd/auth-architecture-linter-rules.md
+++ b/docs/prd/auth-architecture-linter-rules.md
@@ -209,5 +209,5 @@ import (
- Command Registry Pattern: `docs/prd/command-registry-pattern.md`
- Error Handling Linter Rules: `docs/prd/error-handling-linter-rules.md`
-- Testing Strategy: `docs/prd/testing-strategy.md`
+- Testing Strategy: `docs/prd/testability-refactoring-strategy.md`
- Interface-Driven Design: `CLAUDE.md` - "Architectural Patterns"
diff --git a/docs/prd/auth-context-multi-identity.md b/docs/prd/auth-context-multi-identity.md
index 3be5dcfca7..92af7cb199 100644
--- a/docs/prd/auth-context-multi-identity.md
+++ b/docs/prd/auth-context-multi-identity.md
@@ -1129,7 +1129,7 @@ func processTagStore(
## References
- [Original Issue Report](#problem-statement)
-- [Atmos Auth PRD](../pkg/auth/docs/PRD/PRD-Atmos-Auth.md)
+- [Atmos Auth PRD](../../pkg/auth/docs/PRD/PRD-Atmos-Auth.md)
- [AWS SDK Go v2 Configuration](https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/)
- [Error Handling Strategy](error-handling-strategy.md)
diff --git a/docs/prd/auth-file-isolation-pattern.md b/docs/prd/auth-file-isolation-pattern.md
index c87bbf7f02..59c4cbdf42 100644
--- a/docs/prd/auth-file-isolation-pattern.md
+++ b/docs/prd/auth-file-isolation-pattern.md
@@ -517,7 +517,7 @@ When implementing this pattern for an existing provider that uses non-XDG paths:
3. **Provider-specific PRDs**:
- [AWS Authentication File Isolation](./aws-auth-file-isolation.md)
- [Azure Authentication File Isolation](./azure-auth-file-isolation.md)
-4. **[XDG Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)** - Official standard
+4. **[XDG Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)** - Official standard
## Success Metrics
diff --git a/docs/prd/auth-list-command.md b/docs/prd/auth-list-command.md
index 283f958698..c9cca02493 100644
--- a/docs/prd/auth-list-command.md
+++ b/docs/prd/auth-list-command.md
@@ -1087,7 +1087,7 @@ func validateMermaidStructure(mermaid string) error
- Atmos Authentication Documentation: https://atmos.tools/cli/commands/auth/
- CLAUDE.md: ../../CLAUDE.md - Atmos coding conventions
- Error Handling Strategy: ./error-handling-strategy.md
-- Testing Strategy: ./testing-strategy.md
+- Testing Strategy: ./testability-refactoring-strategy.md
- Charmbracelet Bubbles Table: https://github.com/charmbracelet/bubbles/tree/master/table
- Charmbracelet Lipgloss: https://github.com/charmbracelet/lipgloss
- Graphviz DOT Language: https://graphviz.org/doc/info/lang.html
@@ -1414,8 +1414,7 @@ atmos auth list --format graphviz > auth-graph.dot
### Next Steps
- See full documentation: https://atmos.tools/cli/commands/auth/list
-- Configure authentication: https://atmos.tools/cli/commands/auth/
-- Learn about authentication providers: https://atmos.tools/core-concepts/auth-providers
+- Configure authentication: https://atmos.tools/cli/commands/auth/login
---
diff --git a/docs/prd/auth-logout.md b/docs/prd/auth-logout.md
index cad1fa99e7..3812142fd0 100644
--- a/docs/prd/auth-logout.md
+++ b/docs/prd/auth-logout.md
@@ -782,8 +782,8 @@ func (p *GCPProvider) Logout(ctx context.Context) error
## 12. References
-- [PRD: Atmos Auth](pkg/auth/docs/prd/PRD-Atmos-Auth.md)
-- [Atmos Error Handling Strategy](docs/prd/error-handling-strategy.md)
-- [Atmos Testing Strategy](docs/prd/testing-strategy.md)
+- [PRD: Atmos Auth](../../pkg/auth/docs/PRD/PRD-Atmos-Auth.md)
+- [Atmos Error Handling Strategy](./error-handling-strategy.md)
+- [Atmos Testability Refactoring Strategy](./testability-refactoring-strategy.md)
- [Charmbracelet Huh Documentation](https://github.com/charmbracelet/huh)
- [Charmbracelet Lipgloss Documentation](https://github.com/charmbracelet/lipgloss)
diff --git a/docs/prd/auth-session-management.md b/docs/prd/auth-session-management.md
index ccf3331f89..c07140c4a7 100644
--- a/docs/prd/auth-session-management.md
+++ b/docs/prd/auth-session-management.md
@@ -838,7 +838,7 @@ See the updated [`atmos auth logout`](/cli/commands/auth/auth-logout) documentat
### References
- [AWS CLI SSO Logout](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html)
-- [gcloud auth revoke](https://cloud.google.com/sdk/gcloud/reference/auth/revoke)
+- [gcloud auth revoke](https://docs.cloud.google.com/sdk/gcloud/reference/auth/revoke)
- [OAuth 2.0 Token Revocation (RFC 7009)](https://datatracker.ietf.org/doc/html/rfc7009)
- [OpenID Connect Session Management](https://openid.net/specs/openid-connect-session-1_0.html)
- [OpenID Connect RP-Initiated Logout](https://openid.net/specs/openid-connect-rpinitiated-1_0.html)
diff --git a/docs/prd/avoiding-deep-exits-pattern.md b/docs/prd/avoiding-deep-exits-pattern.md
index 329ff23bf0..b0ec1c0d94 100644
--- a/docs/prd/avoiding-deep-exits-pattern.md
+++ b/docs/prd/avoiding-deep-exits-pattern.md
@@ -379,7 +379,7 @@ func TestCommandIntegration(t *testing.T) {
- **Command Registry Pattern** - `docs/prd/command-registry-pattern.md`
- **Error Handling Strategy** - `docs/prd/error-handling-strategy.md`
-- **Testing Strategy** - `docs/prd/testing-strategy.md`
+- **Testing Strategy** - `docs/prd/testability-refactoring-strategy.md`
## Next Steps
diff --git a/docs/prd/azure-auth-file-isolation.md b/docs/prd/azure-auth-file-isolation.md
index 16af9291e7..4e16649c3b 100644
--- a/docs/prd/azure-auth-file-isolation.md
+++ b/docs/prd/azure-auth-file-isolation.md
@@ -123,7 +123,7 @@ See **[Universal Identity Provider File Isolation Pattern](./auth-file-isolation
### Primary Goals
1. **Match AWS isolation pattern**: Use identical architecture for consistency
-2. **XDG compliance**: Follow [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
+2. **XDG compliance**: Follow [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)
3. **Environment variable control**: Use Azure SDK environment variables to direct SDK to Atmos-managed files
4. **Clean logout**: Delete provider directory to remove all traces
5. **Security model preservation**: Maintain shell session identity scoping
@@ -1325,7 +1325,7 @@ This implementation follows the [Universal Identity Provider File Isolation Patt
2. **[AWS Authentication File Isolation](./aws-auth-file-isolation.md)** - Reference implementation
3. **[XDG Base Directory Specification PRD](./xdg-base-directory-specification.md)** - XDG compliance patterns
4. **[Auth Context and Multi-Identity Support PRD](./auth-context-multi-identity.md)** - AuthContext design and usage
-5. **[XDG Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)** - Official standard
+5. **[XDG Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)** - Official standard
## Changelog
diff --git a/docs/prd/claude-agent-architecture.md b/docs/prd/claude-agent-architecture.md
index 78cef17474..75343f1131 100644
--- a/docs/prd/claude-agent-architecture.md
+++ b/docs/prd/claude-agent-architecture.md
@@ -471,7 +471,7 @@ Every agent must be aware of relevant PRDs:
This agent implements patterns from:
- `docs/prd/command-registry-pattern.md` - Command extensibility architecture
-- `docs/prd/testing-strategy.md` - Testing requirements and patterns
+- `docs/prd/testability-refactoring-strategy.md` - Testing requirements and patterns
- `docs/prd/error-handling-strategy.md` - Error handling conventions
**Before implementing:**
@@ -636,7 +636,7 @@ Before finalizing any agent:
### Documentation
- `CLAUDE.md` - Core development patterns
- `docs/prd/command-registry-pattern.md` - Registry architecture
-- `docs/prd/testing-strategy.md` - Testing requirements
+- `docs/prd/testability-refactoring-strategy.md` - Testing requirements
### Tools and Resources
- Claude Code documentation
diff --git a/docs/prd/command-merging.md b/docs/prd/command-merging.md
index 335ca20205..3ac95657d2 100644
--- a/docs/prd/command-merging.md
+++ b/docs/prd/command-merging.md
@@ -243,4 +243,4 @@ None - all requirements have been implemented and tested.
- [Original Issue](https://github.com/cloudposse/atmos/issues/1447)
- [First Fix Attempt](https://github.com/cloudposse/atmos/issues/1489)
- [Atmos Configuration Documentation](https://atmos.tools/configuration)
-- [CloudPosse Reference Architecture](https://github.com/cloudposse/reference-architectures)
+- [CloudPosse Reference Architecture](https://github.com/cloudposse-archives/reference-architectures)
diff --git a/docs/prd/command-registry-pattern.md b/docs/prd/command-registry-pattern.md
index 232fc5a949..0d260f9611 100644
--- a/docs/prd/command-registry-pattern.md
+++ b/docs/prd/command-registry-pattern.md
@@ -1849,7 +1849,7 @@ func RegisterPlugin(plugin *Plugin) {
## References
- [Cobra Command Documentation](https://github.com/spf13/cobra)
-- [Atmos Custom Commands](/core-concepts/custom-commands)
+- [Atmos Custom Commands](https://atmos.tools/cli/configuration/commands)
- [Go Init Functions](https://golang.org/doc/effective_go#init)
- [Docker CLI Command Registry](https://github.com/docker/cli/tree/master/cli/command)
- [kubectl Plugin System](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/)
diff --git a/docs/prd/component-path-resolution.md b/docs/prd/component-path-resolution.md
index 987fb5f165..12351776df 100644
--- a/docs/prd/component-path-resolution.md
+++ b/docs/prd/component-path-resolution.md
@@ -1188,7 +1188,7 @@ If a component folder is used by multiple component instances in a stack (e.g.,
- **Research Document:** `/Users/erik/conductor/atmos/COMPONENT_RESOLUTION_RESEARCH.md`
- **Command Registry Pattern:** `docs/prd/command-registry-pattern.md`
- **Error Handling Strategy:** `docs/prd/error-handling-strategy.md`
-- **Testing Strategy:** `docs/prd/testing-strategy.md`
+- **Testing Strategy:** `docs/prd/testability-refactoring-strategy.md`
- **Component Path Utils:** `pkg/utils/component_path_utils.go`
- **CLI Utils:** `internal/exec/cli_utils.go`
- **Process Stacks:** `internal/exec/utils.go`
diff --git a/docs/prd/component-registry-pattern.md b/docs/prd/component-registry-pattern.md
index d4335208d9..dd3fd2d81f 100644
--- a/docs/prd/component-registry-pattern.md
+++ b/docs/prd/component-registry-pattern.md
@@ -1925,9 +1925,8 @@ The component provider decides what to validate and what to ignore. This matches
## References
- [Command Registry Pattern PRD](command-registry-pattern.md)
-- [Atmos Component Architecture Research](../../.conductor/bordeaux/component-architecture-research.md)
- [Go Plugin Documentation](https://pkg.go.dev/plugin)
-- [Terraform Plugin Protocol](https://www.terraform.io/plugin)
+- [Terraform Plugin Protocol](https://developer.hashicorp.com/terraform/plugin)
- [kubectl Plugin System](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/)
## Changelog
diff --git a/docs/prd/deferred-yaml-functions-evaluation-in-merge.md b/docs/prd/deferred-yaml-functions-evaluation-in-merge.md
index 1a9deaf34e..5a7894f8ef 100644
--- a/docs/prd/deferred-yaml-functions-evaluation-in-merge.md
+++ b/docs/prd/deferred-yaml-functions-evaluation-in-merge.md
@@ -998,7 +998,7 @@ See integration example in `pkg/merge/merge_yaml_functions.go` (`MergeWithDeferr
## References
- YAML Functions Documentation: https://atmos.tools/functions/yaml/
-- Mergo Library: https://github.com/imdario/mergo
+- Mergo Library: https://github.com/darccio/mergo
- Implementation: `pkg/merge/deferred.go`, `pkg/merge/merge_yaml_functions.go`
- Tests: `pkg/merge/*_test.go`, `tests/yaml_functions_merge_test.go`
- Examples: `pkg/merge/example_deferred_test.go`
diff --git a/docs/prd/devcontainer-command.md b/docs/prd/devcontainer-command.md
index 142d3cd9e6..b0d611ffa6 100644
--- a/docs/prd/devcontainer-command.md
+++ b/docs/prd/devcontainer-command.md
@@ -1233,6 +1233,6 @@ devcontainer:
- [Development Containers Specification](https://containers.dev/)
- [Docker CLI Reference](https://docs.docker.com/engine/reference/commandline/cli/)
- [Podman CLI Reference](https://docs.podman.io/en/latest/Commands.html)
-- [Atmos Component Registry Pattern](docs/prd/component-registry-pattern.md)
-- [Atmos Command Registry Pattern](docs/prd/command-registry-pattern.md)
-- [Atmos YAML Functions](https://atmos.tools/core-concepts/stacks/templates) - `!include` documentation
+- [Atmos Component Registry Pattern](./component-registry-pattern.md)
+- [Atmos Command Registry Pattern](./command-registry-pattern.md)
+- [Atmos YAML Functions](https://atmos.tools/stacks/templates) - `!include` documentation
diff --git a/docs/prd/devcontainer-identity-support.md b/docs/prd/devcontainer-identity-support.md
index fc4368053a..b432419fcf 100644
--- a/docs/prd/devcontainer-identity-support.md
+++ b/docs/prd/devcontainer-identity-support.md
@@ -799,5 +799,5 @@ atmos devcontainer shell geodesic -s ue2-prod
- [Auth Context Multi-Identity PRD](./auth-context-multi-identity.md)
- [Devcontainer Command PRD](./devcontainer-command.md)
-- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
+- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)
- [Development Containers Specification](https://containers.dev/)
diff --git a/docs/prd/error-handling-strategy.md b/docs/prd/error-handling-strategy.md
index 8ad3693929..56530a4f4a 100644
--- a/docs/prd/error-handling-strategy.md
+++ b/docs/prd/error-handling-strategy.md
@@ -396,7 +396,7 @@ func init() {
- [Go 1.13 Error Handling](https://go.dev/blog/go1.13-errors)
- [Go errors.Join Documentation](https://pkg.go.dev/errors#Join)
- [err113 Linter Documentation](https://github.com/Djarvur/go-err113)
-- [Atmos Error Package](../errors/errors.go)
+- [Atmos Error Package](../../errors/errors.go)
## Revision History
diff --git a/docs/prd/error-types-and-sentinels.md b/docs/prd/error-types-and-sentinels.md
index c13ad4bd9f..1ac762850b 100644
--- a/docs/prd/error-types-and-sentinels.md
+++ b/docs/prd/error-types-and-sentinels.md
@@ -794,7 +794,7 @@ func TestWorkflowError_Chain(t *testing.T) {
### Related PRDs
- [Command Registry Pattern](./command-registry-pattern.md) - Error handling in commands
-- [Testing Strategy](./testing-strategy.md) - Testing error handling
+- [Testing Strategy](./testability-refactoring-strategy.md) - Testing error handling
## Conclusion
diff --git a/docs/prd/exit-codes.md b/docs/prd/exit-codes.md
index 9507cf2934..b7a7cd50d3 100644
--- a/docs/prd/exit-codes.md
+++ b/docs/prd/exit-codes.md
@@ -487,6 +487,6 @@ esac
## Related Documents
-- [Error Handling Strategy](./atmos-error-handling.md)
+- [Error Handling Strategy](./error-handling.md)
- [Error Builder API](../errors.md)
-- [Testing Strategy](./testing-strategy.md)
+- [Testing Strategy](./testability-refactoring-strategy.md)
diff --git a/docs/prd/flag-handling/README.md b/docs/prd/flag-handling/README.md
index 042cdb2ff9..c7b0f0faf8 100644
--- a/docs/prd/flag-handling/README.md
+++ b/docs/prd/flag-handling/README.md
@@ -2,20 +2,20 @@
**⚠️ NOTICE: This directory contains historical design documents that have been consolidated.**
-**For the current, authoritative specification, see: [`../unified-flag-parsing-refactoring.md`](../unified-flag-parsing-refactoring.md)**
+**For the current, authoritative specification, see: [`./unified-flag-parsing.md`](./unified-flag-parsing.md)**
## Overview
This directory contains design documents for various aspects of Atmos's flag parsing system. These documents represent the evolution of thinking that led to the final unified approach.
-**Current Status**: All these documents have been consolidated into a single comprehensive PRD: [`unified-flag-parsing-refactoring.md`](../unified-flag-parsing-refactoring.md)
+**Current Status**: All these documents have been consolidated into a single comprehensive PRD: [`unified-flag-parsing.md`](./unified-flag-parsing.md)
## Historical Documents
The following documents provide detailed context on specific aspects of the design but should be read alongside the master PRD:
### [unified-flag-parsing.md](unified-flag-parsing.md)
-**Status**: Superseded by `unified-flag-parsing-refactoring.md`
+**Status**: Superseded by `unified-flag-parsing.md`
Original comprehensive design for unified flag parsing. The concepts here have been integrated into the master PRD with additional details on compatibility flags and migration strategy.
@@ -59,7 +59,7 @@ For the complete, up-to-date specification covering:
- Blog post guidance
- Implementation status
-**→ See [`../unified-flag-parsing-refactoring.md`](../unified-flag-parsing-refactoring.md)**
+**→ See [`./unified-flag-parsing.md`](./unified-flag-parsing.md)**
## Implementation Status
diff --git a/docs/prd/flag-handling/flagparser-integration.md b/docs/prd/flag-handling/flagparser-integration.md
index 6367e68ded..f9b5f666c9 100644
--- a/docs/prd/flag-handling/flagparser-integration.md
+++ b/docs/prd/flag-handling/flagparser-integration.md
@@ -6,7 +6,7 @@ This document describes a historical design that has been superseded. The actual
- Uses `StandardParser` (not `StandardFlagParser`) for standard commands
- Uses `AtmosFlagParser` (not `PassThroughFlagParser`) for terraform with compatibility flags
- `PassThroughFlagParser` was completely deleted on 2025-11-06
-- See `../unified-flag-parsing-refactoring.md` for current architecture
+- See `./unified-flag-parsing.md` for current architecture
## Historical Objective
Replace all manual flag parsing in Atmos with the unified `pkg/flags` system. Remove `DisableFlagParsing = true` and let Cobra + our parsers handle everything properly.
diff --git a/docs/prd/flag-handling/unified-flag-parsing.md b/docs/prd/flag-handling/unified-flag-parsing.md
index c8b213b49b..15df1327cc 100644
--- a/docs/prd/flag-handling/unified-flag-parsing.md
+++ b/docs/prd/flag-handling/unified-flag-parsing.md
@@ -18,7 +18,7 @@ This document contains historical design that has been partially superseded:
- Precedence order (flags > env > config > defaults)
**FOR CURRENT IMPLEMENTATION**:
-- See `../unified-flag-parsing-refactoring.md` for up-to-date architecture
+- See `./unified-flag-parsing.md` for up-to-date architecture
- Below content kept for historical context and design rationale
---
@@ -2612,7 +2612,7 @@ func NewTerraformCmd(
- [Functional Options Pattern](https://www.codingexplorations.com/blog/functional-options-pattern-go)
- Atmos existing PRDs:
- `docs/prd/command-registry-pattern.md` - Command registration system
- - `docs/prd/testing-strategy.md` - Testing approach and coverage
+ - `docs/prd/testability-refactoring-strategy.md` - Testing approach and coverage
- `docs/prd/flag-handling/` - Strongly-typed interpreter system (NEW)
- `global-flags-pattern.md` - Global flags handling via embedding
- `global-flags-examples.md` - Real-world examples with --logs-level and --identity
diff --git a/docs/prd/help-system-architecture.md b/docs/prd/help-system-architecture.md
index 1d65a41ea4..023f5faf64 100644
--- a/docs/prd/help-system-architecture.md
+++ b/docs/prd/help-system-architecture.md
@@ -299,4 +299,4 @@ Supporting all variants ensures Atmos works well in different environments and C
- [Charmbracelet lipgloss](https://github.com/charmbracelet/lipgloss)
- [CLICOLOR standard](https://bixense.com/clicolors/)
- [NO_COLOR standard](https://no-color.org/)
-- [Cobra documentation](https://github.com/spf13/cobra/blob/master/user_guide.md)
+- [Cobra documentation](https://cobra.dev/)
diff --git a/docs/prd/hooks-component-scoping.md b/docs/prd/hooks-component-scoping.md
index 002743de96..e7685798a4 100644
--- a/docs/prd/hooks-component-scoping.md
+++ b/docs/prd/hooks-component-scoping.md
@@ -452,9 +452,9 @@ components:
## Related Documentation
-- [Lifecycle Hooks](https://atmos.tools/core-concepts/stacks/hooks)
-- [Stack Configuration](https://atmos.tools/core-concepts/stacks)
-- [Component Inheritance](https://atmos.tools/core-concepts/components)
+- [Lifecycle Hooks](https://atmos.tools/stacks/hooks)
+- [Stack Configuration](https://atmos.tools/stacks)
+- [Component Inheritance](https://atmos.tools/components)
## Reference Implementation
diff --git a/docs/prd/io-handling-strategy.md b/docs/prd/io-handling-strategy.md
index 39c0ef3c0f..9c80b6e7c7 100644
--- a/docs/prd/io-handling-strategy.md
+++ b/docs/prd/io-handling-strategy.md
@@ -1098,6 +1098,6 @@ func (f *formatter) RenderMarkdown(content string) (string, error) {
- [NO_COLOR Standard](https://no-color.org/)
- [CLICOLOR Conventions](https://bixense.com/clicolors/)
-- [Charmbracelet termenv](https://github.com/charmbracelet/termenv)
+- [Termenv](https://github.com/muesli/termenv)
- [Charmbracelet glamour](https://github.com/charmbracelet/glamour)
- PR #1433: Theme System
diff --git a/docs/prd/keyring-backends.md b/docs/prd/keyring-backends.md
index 305d741e5b..b109a1414e 100644
--- a/docs/prd/keyring-backends.md
+++ b/docs/prd/keyring-backends.md
@@ -540,7 +540,7 @@ rm -rf ~/.local/share/atmos/keyring
## References
-- **XDG Base Directory Specification**: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+- **XDG Base Directory Specification**: https://specifications.freedesktop.org/basedir/basedir-spec-latest.html
- **99designs/keyring**: https://github.com/99designs/keyring
- **adrg/xdg**: https://github.com/adrg/xdg
- **Error Handling Strategy**: `docs/prd/error-handling-strategy.md`
diff --git a/docs/prd/metadata-inheritance.md b/docs/prd/metadata-inheritance.md
index 1370752d6a..07e6068bdd 100644
--- a/docs/prd/metadata-inheritance.md
+++ b/docs/prd/metadata-inheritance.md
@@ -402,7 +402,7 @@ This could allow users to disable inheritance of specific sections if needed, th
## References
-- [Component Inheritance Documentation](https://atmos.tools/core-concepts/stacks/inheritance)
-- [Terraform Backends Documentation](https://atmos.tools/core-concepts/components/terraform/backends)
+- [Component Inheritance Documentation](https://atmos.tools/howto/inheritance)
+- [Terraform Backends Documentation](https://atmos.tools/components/terraform/backends)
- [Version Management Design Patterns](https://atmos.tools/design-patterns/version-management)
- Related code: `internal/exec/stack_processor_process_stacks_helpers_inheritance.go`
diff --git a/docs/prd/terraform-command-yaml-function-authentication.md b/docs/prd/terraform-command-yaml-function-authentication.md
index e49b9cd082..7873c080dd 100644
--- a/docs/prd/terraform-command-yaml-function-authentication.md
+++ b/docs/prd/terraform-command-yaml-function-authentication.md
@@ -262,7 +262,6 @@ All success criteria achieved:
## 6. References
-- **Bug Report:** https://github.com/cloudposse/infra-live/pull/1640
- **Related Fix (PR #1742):** https://github.com/cloudposse/atmos/pull/1742 - Fixed describe commands
- **Authentication Architecture:** `pkg/auth/`, YAML functions in `internal/exec/yaml_func_*.go`
diff --git a/docs/prd/version-constraint.md b/docs/prd/version-constraint.md
index b8ec2a4ca5..3b4d16a52a 100644
--- a/docs/prd/version-constraint.md
+++ b/docs/prd/version-constraint.md
@@ -892,5 +892,5 @@ constraints, err := version.NewConstraint(">=2.5.0, <3.0.0, !=2.7.0")
- [hashicorp/go-version](https://github.com/hashicorp/go-version) - Constraint syntax
- [Semantic Versioning](https://semver.org/) - Version format specification
-- [Terraform Version Constraints](https://www.terraform.io/language/expressions/version-constraints) - Similar constraint syntax
+- [Terraform Version Constraints](https://developer.hashicorp.com/terraform/language/expressions/version-constraints) - Similar constraint syntax
- Existing Atmos version handling: `pkg/version/version.go`, `internal/exec/version.go`
diff --git a/docs/prd/workspace-key-prefixes.md b/docs/prd/workspace-key-prefixes.md
index 717a144859..895327e0e1 100644
--- a/docs/prd/workspace-key-prefixes.md
+++ b/docs/prd/workspace-key-prefixes.md
@@ -386,6 +386,6 @@ This requires careful migration:
## References
- [PRD: Metadata Inheritance](./metadata-inheritance.md)
-- [Terraform Backends Documentation](https://atmos.tools/core-concepts/components/terraform/backends)
+- [Terraform Backends Documentation](https://atmos.tools/components/terraform/backends)
- [Version Management Design Patterns](https://atmos.tools/design-patterns/version-management)
- Related code: `internal/exec/stack_processor_backend.go`
diff --git a/docs/prd/xdg-base-directory-specification.md b/docs/prd/xdg-base-directory-specification.md
index a623cd9614..917c980ad9 100644
--- a/docs/prd/xdg-base-directory-specification.md
+++ b/docs/prd/xdg-base-directory-specification.md
@@ -21,7 +21,7 @@ Previously, these files used hardcoded paths like `~/.atmos/`, which:
### Requirements
-1. **Follow XDG Base Directory Specification**: Implement the [freedesktop.org XDG standard](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
+1. **Follow XDG Base Directory Specification**: Implement the [freedesktop.org XDG standard](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html)
2. **Platform-aware defaults**: Use native conventions on macOS and Windows
3. **Environment variable override**: Support both `XDG_*` and `ATMOS_XDG_*` variables
4. **Backward compatibility**: Existing configurations continue to work
@@ -540,7 +540,7 @@ Additional documentation:
## Related Documents
- [Keyring Backend System PRD](./keyring-backends.md) - Credential storage system that uses XDG for file backend
-- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) - Official standard
+- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir/basedir-spec-latest.html) - Official standard
- [github.com/adrg/xdg](https://github.com/adrg/xdg) - Go library used for platform defaults
## Changelog
diff --git a/docs/structured-logging.md b/docs/structured-logging.md
index 785ea60e1b..d7cd06f344 100644
--- a/docs/structured-logging.md
+++ b/docs/structured-logging.md
@@ -147,7 +147,7 @@ Error and warning logs need enough context to diagnose and fix issues.
## Charm Logger in Atmos
-Atmos uses the [Charm Logger](https://charm.sh/blog/the-charm-logger/), which offers:
+Atmos uses the [Charm Logger](https://charm.land/blog/the-charm-logger/), which offers:
- Simple APIs through `pkg/logger` such as `logger.Trace`, `logger.Debug`, `logger.Info`, `logger.Warn`, and `logger.Error`
- Automatic line wrapping and colorized output for terminals
@@ -222,6 +222,6 @@ Follow the existing conventions in Atmos and keep suppression comments to a mini
## Further Reading
-- [Charm Logger](https://charm.sh/blog/the-charm-logger/)
+- [Charm Logger](https://charm.land/blog/the-charm-logger/)
- [Loggly: What is Structured Logging](https://www.loggly.com/use-cases/what-is-structured-logging-and-how-to-use-it/)
- [Otelic: What is Semantic Logging](https://otelic.com/en/reference-guide/what-is-semantic-logging-and-why-is-it-important)
diff --git a/examples/README.md b/examples/README.md
index 6a8377f5b2..2142727607 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -47,12 +47,12 @@ Think of each demo folder as representing an example of a standalone repository.
## Quick Start (Simple)
-The [`demo-stacks`](demo-stacks/) contains code for the [simple quick start](https://atmos.tools/quick-start/advanced). This requires no special permissions and is the fastest way to grasp [atmos concepts](https://atmos.tools/core-concepts).
+The [`quick-start-simple`](quick-start-simple/) contains code for the [simple quick start](https://atmos.tools/quick-start/simple). This requires no special permissions and is the fastest way to grasp [atmos concepts](https://atmos.tools).
## Quick Start (Advanced)
-The [`quick-start`](quick-start/) contains code for the [advanced quick start](https://atmos.tools/quick-start/advanced). Please note that it requires an AWS organization with administrative credentials.
+The [`quick-start-advanced`](quick-start-advanced/) contains code for the [advanced quick start](https://atmos.tools/quick-start/advanced). Please note that it requires an AWS organization with administrative credentials.
## Tests
-The [`tests/`](tests/) folder includes a variety of patterns and configurations that we use for CI tests. They are not intended to serve as examples or best practices. We deliberately break some of them for testing purposes. These configurations implement every function of Atmos in some shape or form, but they are not necessarily exemplars of design.
+The [`tests/`](../tests/) folder includes a variety of patterns and configurations that we use for CI tests. They are not intended to serve as examples or best practices. We deliberately break some of them for testing purposes. These configurations implement every function of Atmos in some shape or form, but they are not necessarily exemplars of design.
diff --git a/examples/demo-atlantis/README.md b/examples/demo-atlantis/README.md
index 04ed0b2097..afcb0c4b34 100644
--- a/examples/demo-atlantis/README.md
+++ b/examples/demo-atlantis/README.md
@@ -7,7 +7,7 @@ Learn more about [Atlantis Integration](https://atmos.tools/integrations/atlanti
## What You'll See
- [Atlantis repo config](https://atmos.tools/integrations/atlantis/repo-config/) generation
-- [Custom commands](https://atmos.tools/core-concepts/custom-commands/) for build automation
+- [Custom commands](https://atmos.tools/cli/configuration/commands) for build automation
- Varfile generation for Atlantis projects
## Try It
diff --git a/examples/demo-component-versions/README.md b/examples/demo-component-versions/README.md
index f7966aae84..aa772fb177 100644
--- a/examples/demo-component-versions/README.md
+++ b/examples/demo-component-versions/README.md
@@ -2,12 +2,12 @@
Pin components to specific versions for reproducible deployments.
-Learn more about [Vendoring](https://atmos.tools/core-concepts/vendoring/).
+Learn more about [Vendoring](https://atmos.tools/vendor).
## What You'll See
-- [Version pinning](https://atmos.tools/core-concepts/vendoring/#versioning) with git refs
-- [YAML anchors](https://atmos.tools/core-concepts/vendoring/vendor-manifest/#yaml-anchors) to DRY up vendor configs
+- [Version pinning](https://atmos.tools/vendor#versioning) with git refs
+- [YAML anchors](https://atmos.tools/vendor/vendor-manifest#yaml-anchors) to DRY up vendor configs
- Multiple component versions side-by-side
## Try It
diff --git a/examples/demo-context/README.md b/examples/demo-context/README.md
index 8c5d65826c..2c165ad73a 100644
--- a/examples/demo-context/README.md
+++ b/examples/demo-context/README.md
@@ -6,8 +6,8 @@ Learn more about [Describe Config](https://atmos.tools/cli/commands/describe/con
## What You'll See
-- [Context providers](https://atmos.tools/core-concepts/stacks/templates/#context) for dynamic values
-- [Name templates](https://atmos.tools/core-concepts/stacks/naming/) using context values
+- [Context providers](https://atmos.tools/stacks/templates#context) for dynamic values
+- [Name templates](https://atmos.tools/stacks/naming) using context values
- Configuration merging from imports and mixins
## Try It
diff --git a/examples/demo-helmfile/README.md b/examples/demo-helmfile/README.md
index 9b084792df..506183102e 100644
--- a/examples/demo-helmfile/README.md
+++ b/examples/demo-helmfile/README.md
@@ -2,11 +2,11 @@
Deploy Kubernetes resources using Helmfile with Atmos stack patterns.
-Learn more about [Helmfile Components](https://atmos.tools/core-concepts/components/helmfile/).
+Learn more about [Helmfile Components](https://atmos.tools/components/helmfile).
## What You'll See
-- [Helmfile component](https://atmos.tools/core-concepts/components/helmfile/) configuration
+- [Helmfile component](https://atmos.tools/components/helmfile) configuration
- Stack inheritance for Kubernetes deployments
- Local k3s environment via Docker Compose
diff --git a/examples/demo-library/weather/README.md b/examples/demo-library/weather/README.md
index b931ba4b22..b24841569c 100644
--- a/examples/demo-library/weather/README.md
+++ b/examples/demo-library/weather/README.md
@@ -14,7 +14,7 @@ It also provides several outputs like weather information, request URL, stage, l
## Usage
-To include this module in your [Atmos Stacks](https://atmos.tools/core-concepts/stacks) configuration:
+To include this module in your [Atmos Stacks](https://atmos.tools/stacks) configuration:
```yaml
components:
diff --git a/examples/demo-schemas/README.md b/examples/demo-schemas/README.md
index 8f2379e7f1..009653e47f 100644
--- a/examples/demo-schemas/README.md
+++ b/examples/demo-schemas/README.md
@@ -2,13 +2,13 @@
Validate stack configuration against JSON Schema before running Terraform.
-Learn more about [Validation](https://atmos.tools/core-concepts/validate/).
+Learn more about [Validation](https://atmos.tools/validation).
## What You'll See
-- [Schema from file](https://atmos.tools/core-concepts/validate/json-schema/) - local JSON Schema
-- [Schema from internet](https://atmos.tools/core-concepts/validate/json-schema/#remote-schemas) - fetch from URL (schemastore.org)
-- [Inline schema](https://atmos.tools/core-concepts/validate/json-schema/#inline-schemas) - embedded in atmos.yaml
+- [Schema from file](https://atmos.tools/validation/json-schema) - local JSON Schema
+- [Schema from internet](https://atmos.tools/validation/json-schema#remote-schemas) - fetch from URL (schemastore.org)
+- [Inline schema](https://atmos.tools/validation/json-schema#inline-schemas) - embedded in atmos.yaml
## Try It
diff --git a/examples/demo-stacks/README.md b/examples/demo-stacks/README.md
index 73b9071feb..b99eed5e76 100644
--- a/examples/demo-stacks/README.md
+++ b/examples/demo-stacks/README.md
@@ -2,13 +2,13 @@
Inherit configuration across environments to eliminate duplication.
-Learn more about [Stack Inheritance](https://atmos.tools/core-concepts/stacks/inheritance/).
+Learn more about [Stack Inheritance](https://atmos.tools/howto/inheritance).
## What You'll See
-- [Catalog pattern](https://atmos.tools/core-concepts/stacks/catalogs/) with base component defaults
-- [Import](https://atmos.tools/core-concepts/stacks/imports/) to inherit shared configuration
-- Environment-specific [overrides](https://atmos.tools/core-concepts/stacks/overrides/) in deploy stacks
+- [Catalog pattern](https://atmos.tools/howto/catalogs) with base component defaults
+- [Import](https://atmos.tools/stacks/imports) to inherit shared configuration
+- Environment-specific [overrides](https://atmos.tools/stacks/overrides) in deploy stacks
## Try It
diff --git a/examples/demo-stacks/components/terraform/myapp/README.md b/examples/demo-stacks/components/terraform/myapp/README.md
index b931ba4b22..b24841569c 100644
--- a/examples/demo-stacks/components/terraform/myapp/README.md
+++ b/examples/demo-stacks/components/terraform/myapp/README.md
@@ -14,7 +14,7 @@ It also provides several outputs like weather information, request URL, stage, l
## Usage
-To include this module in your [Atmos Stacks](https://atmos.tools/core-concepts/stacks) configuration:
+To include this module in your [Atmos Stacks](https://atmos.tools/stacks) configuration:
```yaml
components:
diff --git a/examples/demo-workflows/README.md b/examples/demo-workflows/README.md
index f71d2fc1a4..6782fe8195 100644
--- a/examples/demo-workflows/README.md
+++ b/examples/demo-workflows/README.md
@@ -2,11 +2,11 @@
Run multiple Atmos commands in sequence with a single command.
-Learn more about [Workflows](https://atmos.tools/core-concepts/workflows/).
+Learn more about [Workflows](https://atmos.tools/workflows).
## What You'll See
-- [Workflow definitions](https://atmos.tools/core-concepts/workflows/workflow-manifest/) in stack manifests
+- [Workflow definitions](https://atmos.tools/workflows/workflow-manifest) in stack manifests
- Chaining multiple `atmos terraform` commands
- Parameterized workflows with arguments
diff --git a/examples/quick-start-simple/README.md b/examples/quick-start-simple/README.md
index 6cb5db5321..c952accbc9 100644
--- a/examples/quick-start-simple/README.md
+++ b/examples/quick-start-simple/README.md
@@ -6,9 +6,9 @@ Learn more in the [Quick Start Guide](https://atmos.tools/quick-start/).
## What You'll See
-- Basic [stack configuration](https://atmos.tools/core-concepts/stacks/) with dev, staging, and prod environments
-- A simple Terraform [component](https://atmos.tools/core-concepts/components/) (`weather`)
-- [Catalog pattern](https://atmos.tools/core-concepts/stacks/catalogs/) for shared component defaults
+- Basic [stack configuration](https://atmos.tools/stacks) with dev, staging, and prod environments
+- A simple Terraform [component](https://atmos.tools/components) (`weather`)
+- [Catalog pattern](https://atmos.tools/howto/catalogs) for shared component defaults
## Try It
diff --git a/examples/quick-start-simple/components/terraform/weather/README.md b/examples/quick-start-simple/components/terraform/weather/README.md
index b931ba4b22..b24841569c 100644
--- a/examples/quick-start-simple/components/terraform/weather/README.md
+++ b/examples/quick-start-simple/components/terraform/weather/README.md
@@ -14,7 +14,7 @@ It also provides several outputs like weather information, request URL, stage, l
## Usage
-To include this module in your [Atmos Stacks](https://atmos.tools/core-concepts/stacks) configuration:
+To include this module in your [Atmos Stacks](https://atmos.tools/stacks) configuration:
```yaml
components:
diff --git a/lychee.toml b/lychee.toml
new file mode 100644
index 0000000000..97781df719
--- /dev/null
+++ b/lychee.toml
@@ -0,0 +1,50 @@
+# Lychee link checker configuration
+# https://github.com/lycheeverse/lychee
+#
+# Run locally: make link-check
+# Or directly: lychee --config lychee.toml '**/*.md'
+
+# Log level: "error", "warn", "info", "debug", "trace"
+verbose = "info"
+
+# Don't show progress bar (cleaner CI output)
+no_progress = true
+
+# Timeout for each request (seconds)
+timeout = 30
+
+# Retry failed requests
+max_retries = 3
+
+# Accept these HTTP status codes as valid
+accept = ["200", "204", "301", "302", "403", "429"]
+
+# Paths to exclude from checking (input files to scan)
+exclude_path = [
+ "website",
+ "node_modules",
+ ".git",
+ ".conductor",
+]
+
+# URL patterns to exclude (regex)
+exclude = [
+ "localhost",
+ "127\\.0\\.0\\.1",
+ "example\\.com",
+ "cpco\\.io",
+ "cloudposse\\.com.*utm_",
+ "slack\\.cloudposse\\.com",
+ "wttr\\.in",
+ # GNU.org (rate limits and connection resets)
+ "gnu\\.org",
+ # Cloudinary image resizing proxy
+ "img\\.cloudposse\\.com",
+ # atmos.tools URLs (can't verify website links locally)
+ "atmos\\.tools",
+ # Root-relative paths converted to file:// URLs (atmos.tools website paths)
+ "file://.*/cli/",
+ # Files that don't exist yet (planned documentation)
+ "website/docs/cli/errors\\.mdx",
+ "website/docs/cli/configuration/mask\\.mdx",
+]
diff --git a/tests/README.md b/tests/README.md
index e72046f983..363762742c 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -206,7 +206,7 @@ func TestOCIVendoring(t *testing.T) {
| `RequireFilePath(t, path, purpose)` | Check file/directory exists | Missing path |
| `RequireOCIAuthentication(t)` | Check OCI registry auth | GitHub token not set |
-See [Testing Strategy PRD](../docs/prd/testing-strategy.md) for the complete design document.
+See [Testability Refactoring Strategy](../docs/prd/testability-refactoring-strategy.md) for the complete design document.
## Test Cases
diff --git a/tests/fixtures/scenarios/complete/README.md b/tests/fixtures/scenarios/complete/README.md
index e82cb31b9a..5bc8e91a8f 100644
--- a/tests/fixtures/scenarios/complete/README.md
+++ b/tests/fixtures/scenarios/complete/README.md
@@ -2,4 +2,4 @@
These configurations are used by the Atmos tests and CI to test/validate configurations and behaviors of Atmos.
Thus, they contain many deliberately broken examples and should not be used.
-Instead, please see our [Quick Start](../quick-start) example.
+Instead, please see our [Quick Start](../../../../examples/quick-start-simple/) example.
diff --git a/tests/snapshots/TestCLICommands_atmos.stderr.golden b/tests/snapshots/TestCLICommands_atmos.stderr.golden
index faad891d97..7221f98b2b 100644
--- a/tests/snapshots/TestCLICommands_atmos.stderr.golden
+++ b/tests/snapshots/TestCLICommands_atmos.stderr.golden
@@ -10,8 +10,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:** https://atmos.tools/cli/configuration
-**Atmos Components:** https://atmos.tools/core-concepts/components
+**Atmos Components:** https://atmos.tools/components
-**Atmos Stacks:** https://atmos.tools/core-concepts/stacks
+**Atmos Stacks:** https://atmos.tools/stacks
**Quick Start:** https://atmos.tools/quick-start
diff --git a/tests/snapshots/TestCLICommands_atmos_atlantis_generate_repo-config.stderr.golden b/tests/snapshots/TestCLICommands_atmos_atlantis_generate_repo-config.stderr.golden
index faad891d97..7221f98b2b 100644
--- a/tests/snapshots/TestCLICommands_atmos_atlantis_generate_repo-config.stderr.golden
+++ b/tests/snapshots/TestCLICommands_atmos_atlantis_generate_repo-config.stderr.golden
@@ -10,8 +10,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:** https://atmos.tools/cli/configuration
-**Atmos Components:** https://atmos.tools/core-concepts/components
+**Atmos Components:** https://atmos.tools/components
-**Atmos Stacks:** https://atmos.tools/core-concepts/stacks
+**Atmos Stacks:** https://atmos.tools/stacks
**Quick Start:** https://atmos.tools/quick-start
diff --git a/tests/snapshots/TestCLICommands_atmos_docs_myapp.stdout.golden b/tests/snapshots/TestCLICommands_atmos_docs_myapp.stdout.golden
index 0391d92487..ddc7bbd556 100644
--- a/tests/snapshots/TestCLICommands_atmos_docs_myapp.stdout.golden
+++ b/tests/snapshots/TestCLICommands_atmos_docs_myapp.stdout.golden
@@ -16,7 +16,7 @@ measurement.
## Usage
-To include this module in your Atmos Stacks https://atmos.tools/core-concepts/stacks configuration:
+To include this module in your Atmos Stacks https://atmos.tools/stacks configuration:
components:
terraform:
diff --git a/tests/snapshots/TestCLICommands_atmos_doesnt_warn_if_in_git_repo_with_no_atmos_config.stderr.golden b/tests/snapshots/TestCLICommands_atmos_doesnt_warn_if_in_git_repo_with_no_atmos_config.stderr.golden
index faad891d97..7221f98b2b 100644
--- a/tests/snapshots/TestCLICommands_atmos_doesnt_warn_if_in_git_repo_with_no_atmos_config.stderr.golden
+++ b/tests/snapshots/TestCLICommands_atmos_doesnt_warn_if_in_git_repo_with_no_atmos_config.stderr.golden
@@ -10,8 +10,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:** https://atmos.tools/cli/configuration
-**Atmos Components:** https://atmos.tools/core-concepts/components
+**Atmos Components:** https://atmos.tools/components
-**Atmos Stacks:** https://atmos.tools/core-concepts/stacks
+**Atmos Stacks:** https://atmos.tools/stacks
**Quick Start:** https://atmos.tools/quick-start
diff --git a/tests/snapshots/TestCLICommands_atmos_warns_if_not_in_git_repo_with_no_atmos_config.stderr.golden b/tests/snapshots/TestCLICommands_atmos_warns_if_not_in_git_repo_with_no_atmos_config.stderr.golden
index d8c1b21cb2..156ec0c293 100644
--- a/tests/snapshots/TestCLICommands_atmos_warns_if_not_in_git_repo_with_no_atmos_config.stderr.golden
+++ b/tests/snapshots/TestCLICommands_atmos_warns_if_not_in_git_repo_with_no_atmos_config.stderr.golden
@@ -13,8 +13,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:** https://atmos.tools/cli/configuration
-**Atmos Components:** https://atmos.tools/core-concepts/components
+**Atmos Components:** https://atmos.tools/components
-**Atmos Stacks:** https://atmos.tools/core-concepts/stacks
+**Atmos Stacks:** https://atmos.tools/stacks
**Quick Start:** https://atmos.tools/quick-start
diff --git a/tests/snapshots/TestCLICommands_check_atmos_in_empty-dir.stderr.golden b/tests/snapshots/TestCLICommands_check_atmos_in_empty-dir.stderr.golden
index 970b68cb22..468bd495c1 100644
--- a/tests/snapshots/TestCLICommands_check_atmos_in_empty-dir.stderr.golden
+++ b/tests/snapshots/TestCLICommands_check_atmos_in_empty-dir.stderr.golden
@@ -12,8 +12,8 @@ To configure and start using Atmos, refer to the following documents:
**Atmos CLI Configuration:** https://atmos.tools/cli/configuration
-**Atmos Components:** https://atmos.tools/core-concepts/components
+**Atmos Components:** https://atmos.tools/components
-**Atmos Stacks:** https://atmos.tools/core-concepts/stacks
+**Atmos Stacks:** https://atmos.tools/stacks
**Quick Start:** https://atmos.tools/quick-start
diff --git a/tests/test-cases/hooks-component-scoped/README.md b/tests/test-cases/hooks-component-scoped/README.md
index 74c9239f8c..b19bf8ccdc 100644
--- a/tests/test-cases/hooks-component-scoped/README.md
+++ b/tests/test-cases/hooks-component-scoped/README.md
@@ -91,4 +91,4 @@ hooks-component-scoped/
- Test implementation: `/pkg/hooks/hooks_component_scope_test.go`
- Hooks implementation: `/pkg/hooks/`
-- Documentation: https://atmos.tools/core-concepts/stacks/hooks
+- Documentation: https://atmos.tools/stacks/hooks
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 37de43086a..2e58bf327f 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -67,6 +67,12 @@ const config = {
from: '/reference/terraform-limitations',
to: '/intro/why-atmos'
},
+ // Core concepts main pages moved to top level
+ {from: '/core-concepts/stacks', to: '/stacks'},
+ {from: '/core-concepts/components', to: '/components'},
+ {from: '/core-concepts/components/terraform', to: '/components/terraform'},
+ {from: '/core-concepts/components/library', to: '/components'},
+ {from: '/core-concepts/custom-commands', to: '/cli/configuration/commands'},
// Backend documentation reorganization
{
from: '/core-concepts/components/terraform/state-backend',
@@ -200,14 +206,14 @@ const config = {
to: '/howto/catalogs'
},
// Redirects for workflow pages moved to top level
-// {
-// from: '/core-concepts/workflows',
-// to: '/workflows/workflows'
-// },
-// {
-// from: '/core-concepts/workflows/workflows',
-// to: '/workflows/workflows'
-// },
+ {
+ from: '/core-concepts/workflows',
+ to: '/workflows'
+ },
+ {
+ from: '/core-concepts/workflows/workflows',
+ to: '/workflows'
+ },
// Redirects for vendoring pages moved to top level
{
from: '/core-concepts/vendor',
@@ -279,6 +285,13 @@ const config = {
from: '/core-concepts/stacks/templates/datasources',
to: '/templates/datasources'
},
+ // Additional core-concepts redirects for documentation links
+ {from: '/core-concepts/components/helmfile', to: '/components/helmfile'},
+ {from: '/core-concepts/stacks/naming', to: '/stacks/name'},
+ {from: '/core-concepts/stacks/templates', to: '/templates'},
+ {from: '/core-concepts/workflows/workflow-manifest', to: '/workflows'},
+ {from: '/core-concepts/vendoring', to: '/vendor/'},
+ {from: '/core-concepts/vendoring/vendor-manifest', to: '/vendor/vendor-config'},
// Redirects for directory renames: core-concepts → learn
{from: '/core-concepts/why-atmos', to: '/learn/why-atmos'},
{from: '/core-concepts/concepts-overview', to: '/learn/concepts-overview'},