katvan 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {katvan-0.3.2 → katvan-0.3.3}/CHANGELOG.md +11 -0
- {katvan-0.3.2 → katvan-0.3.3}/PKG-INFO +1 -1
- {katvan-0.3.2 → katvan-0.3.3}/pyproject.toml +1 -1
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/agentculture_repos.yml +27 -0
- katvan-0.3.3/site/docs/devague/index.md +33 -0
- katvan-0.3.3/site/docs/devague/reference/index.md +73 -0
- katvan-0.3.3/site/docs/devague/reference/learn.md +115 -0
- katvan-0.3.3/site/docs/lecodeur/index.md +28 -0
- katvan-0.3.3/site/docs/lecodeur/reference/index.md +12 -0
- katvan-0.3.3/site/docs/lecodeur/reference/learn.md +46 -0
- katvan-0.3.3/site/docs/lepenseur/index.md +30 -0
- katvan-0.3.3/site/docs/lepenseur/reference/index.md +12 -0
- katvan-0.3.3/site/docs/lepenseur/reference/learn.md +58 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_overview.py +3 -3
- {katvan-0.3.2 → katvan-0.3.3}/uv.lock +1 -1
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/SKILL.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/SKILL.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/SKILL.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/scripts/_frontmatter.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/scripts/_repos.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/scripts/doctor.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/scripts/overview.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.claude/skills/librarian/scripts/pull.sh +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.flake8 +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.github/workflows/docs-check.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.github/workflows/publish.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.github/workflows/reference-sync.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.github/workflows/tests.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/.gitignore +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/LICENSE +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/README.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/culture.yaml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/gsc-setup.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/skill-sources.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/audits/2026-05-17-existing-site-docs-audit.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/audits/2026-05-18-sitemap-robots-verification.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/plans/2026-05-14-culture-site-migration.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/plans/2026-05-17-culture-dev-marketing-rebuild.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/plans/2026-05-18-gsc-integration.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-14-culture-site-migration-design.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-17-culture-dev-marketing-rebuild-design.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-18-agentculture-coverage-audit.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-18-agex-docs-absorption-design.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-18-gsc-integration-design.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/__main__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/_errors.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/explain.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/gsc.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/learn.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/overview.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_commands/pull.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_errors.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/cli/_output.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/explain/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/explain/catalog.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/frontmatter.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/_sitemap_fetch.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/client.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/inspect.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/gsc/sitemaps.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/katvan/repos.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/scripts/sync_agex_skills.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/Gemfile +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/Gemfile.lock +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_config.base.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_config.culture.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/category_titles.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/culture_subcommands.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/landing.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/sites.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_data/style.yml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_includes/analytics.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_includes/head_custom.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_includes/repo_table.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_includes/subcommand_table.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_layouts/home.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_sass/color_schemes/anthropic.scss +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_sass/color_schemes/dark-terminal.scss +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/_sass/custom/custom.scss +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/doctor.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/explain.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/gamify.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/hook.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/overview.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/commands/pr.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/getting-started.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/agex/skill-sources.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/IMG_3183.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/apple-touch-icon.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/favicon-16x16.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/favicon-32x32.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/favicon.ico +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/og-agentirc.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/assets/images/og-culture.png +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/afi-cli/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/afi-cli/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/afi-cli/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/agentirc/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/agtag/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/agtag/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/agtag/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/antoine/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/antoine/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/antoine/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/appsec/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/agent-harness-spec.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/layers.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/shared-vs-cited.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/subsites.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/architecture/threads.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/attention.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/auntiepypi/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/auntiepypi/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/auntiepypi/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/core-runtime.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/identity-secrets.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/org-site.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/resident-culture.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/resident-domain.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/categories/workspace-experience.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/code-lens-cli/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/code-lens-cli/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/code-lens-cli/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/coverage-baseline.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/culture/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/cultureagent/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/cultureagent/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/cultureagent/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/cultureflare/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/ecosystem.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/ghafi/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/ghafi/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/ghafi/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/irc-lens/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/irc-lens/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/irc-lens/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/katvan/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/katvan/reference/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/katvan/reference/learn.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/landing-page/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/office-agent/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/quickstart.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/shushu/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/steward/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/telek/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/tipalti/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/why.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/docs/zehut/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/favicon.ico +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/index.md +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/robots.txt +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/sitemap-agentirc.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/sitemap-main.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/sitemap.html +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/site/wrangler.jsonc +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/sonar-project.properties +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_gsc_doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_gsc_inspect.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_gsc_sitemaps.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/cli/test_pull.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/conftest.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/fake_afi_bin.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/sitemap-flat.xml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/sitemap-index.xml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/sitemap-leaf-a.xml +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/sitemaps-list.json +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/url-inspection-crawl-error.json +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/url-inspection-not-indexed.json +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/fixtures/gsc/url-inspection-pass.json +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/test_cli.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/__init__.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_explain.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_frontmatter.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_client.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_doctor.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_inspect.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_scaffold.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_sitemap_fetch.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_gsc_sitemaps.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_learn.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_no_circular_imports.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_output.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_overview.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_pull.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_repos.py +0 -0
- {katvan-0.3.2 → katvan-0.3.3}/tests/unit/test_sync_agex_skills.py +0 -0
|
@@ -9,6 +9,17 @@ artifacts.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.3.3] — 2026-05-24
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Three AgentCulture siblings to the culture.dev docs aggregation
|
|
17
|
+
(`site/_data/agentculture_repos.yml`), all `docs_mode: pull-reference`:
|
|
18
|
+
`lepenseur` and `lecodeur` (resident-culture, the mesh's local thinking
|
|
19
|
+
and coding agents) and `devague` (workspace-experience, the deterministic
|
|
20
|
+
idea→spec→plan CLI). Reference trees generated via `katvan pull`; nav index
|
|
21
|
+
pages added under `site/docs/<id>/`, mirroring `afi-cli` / `agtag`. Closes #36.
|
|
22
|
+
|
|
12
23
|
## [0.3.2] — 2026-05-24
|
|
13
24
|
|
|
14
25
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: katvan
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Maintain sibling-repo docs under one roof on the culture.dev site.
|
|
5
5
|
Project-URL: Homepage, https://github.com/agentculture/katvan
|
|
6
6
|
Project-URL: Issues, https://github.com/agentculture/katvan/issues
|
|
@@ -120,6 +120,15 @@
|
|
|
120
120
|
binary: code-lens
|
|
121
121
|
related: [afi-cli]
|
|
122
122
|
|
|
123
|
+
- id: devague
|
|
124
|
+
category: workspace-experience
|
|
125
|
+
maturity: usable
|
|
126
|
+
docs_mode: pull-reference
|
|
127
|
+
description: Turns a vague idea into a buildable spec, then that spec into a buildable plan — a deterministic CLI, not an agent.
|
|
128
|
+
binary: devague
|
|
129
|
+
install: uv tool install devague
|
|
130
|
+
related: [agex-cli, antoine]
|
|
131
|
+
|
|
123
132
|
- id: zehut
|
|
124
133
|
category: identity-secrets
|
|
125
134
|
maturity: experimental
|
|
@@ -177,6 +186,24 @@
|
|
|
177
186
|
docs_mode: skip
|
|
178
187
|
description: Alignment hub for AgentCulture skills; maintains resident agents and registry hygiene.
|
|
179
188
|
|
|
189
|
+
- id: lepenseur
|
|
190
|
+
category: resident-culture
|
|
191
|
+
maturity: experimental
|
|
192
|
+
docs_mode: pull-reference
|
|
193
|
+
description: The local thinking agent of the Culture mesh — reasons, plans, and analyzes; acts only via chat and files.
|
|
194
|
+
binary: lepenseur
|
|
195
|
+
install: uv tool install lepenseur
|
|
196
|
+
related: [lecodeur, steward]
|
|
197
|
+
|
|
198
|
+
- id: lecodeur
|
|
199
|
+
category: resident-culture
|
|
200
|
+
maturity: experimental
|
|
201
|
+
docs_mode: pull-reference
|
|
202
|
+
description: The local coding agent of the Culture mesh — implements, edits, and tests code (the doer to lepenseur's thinker).
|
|
203
|
+
binary: lecodeur
|
|
204
|
+
install: uv tool install lecodeur
|
|
205
|
+
related: [lepenseur, steward]
|
|
206
|
+
|
|
180
207
|
- id: appsec
|
|
181
208
|
category: resident-domain
|
|
182
209
|
maturity: experimental
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: devague
|
|
3
|
+
parent: Workspace Experience
|
|
4
|
+
nav_order: 6
|
|
5
|
+
permalink: /devague/
|
|
6
|
+
sites: [culture]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# devague
|
|
10
|
+
|
|
11
|
+
**What it is.** A command-line tool that turns a vague feature idea into a
|
|
12
|
+
buildable **spec**, then that spec into a buildable **plan** — by working
|
|
13
|
+
backwards, then forwards. It is a small, deterministic Python CLI (no LLM calls
|
|
14
|
+
inside it, fully unit-tested) — not an agent, service, or daemon.
|
|
15
|
+
|
|
16
|
+
**Why you'd reach for it.** You have a fuzzy idea and want to pressure-test it
|
|
17
|
+
into something you can actually build. The *frame* engine starts from the
|
|
18
|
+
announcement ("pretend it shipped"), captures and interrogates claims, parks
|
|
19
|
+
real unknowns, and exports a spec only once the frame *converges*. The *plan*
|
|
20
|
+
engine then covers every target with tasks that carry acceptance criteria and
|
|
21
|
+
an acyclic dependency order. Its anti-fabrication contract keeps LLM proposals
|
|
22
|
+
"proposed" until a human confirms them.
|
|
23
|
+
|
|
24
|
+
**Where it sits.** *Workspace Experience.* A dev-workflow tool for getting from
|
|
25
|
+
idea to buildable plan, alongside the other CLIs agents reach for. Related:
|
|
26
|
+
[agex-cli](/agex/), [antoine](/antoine/).
|
|
27
|
+
|
|
28
|
+
**How to reach it.** Install with `uv tool install devague` and run it from the
|
|
29
|
+
repository you are speccing; state is plain JSON under `.devague/`. Like every
|
|
30
|
+
AFI binary it answers `devague learn` and `devague explain <move>` (both with
|
|
31
|
+
`--json`).
|
|
32
|
+
|
|
33
|
+
[Reference →](/docs/devague/reference/)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: devague reference
|
|
3
|
+
parent: devague
|
|
4
|
+
nav_order: 1
|
|
5
|
+
sites: [culture]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# devague reference
|
|
9
|
+
|
|
10
|
+
devague turns a vague idea into a buildable spec by working backwards.
|
|
11
|
+
|
|
12
|
+
First question: What's the announcement?
|
|
13
|
+
Pretend this shipped successfully. What would you announce to users, teammates, or yourself?
|
|
14
|
+
|
|
15
|
+
Start from that announcement, then build an Announcement Frame by capturing
|
|
16
|
+
claims, interrogating them, parking what's still vague, and converging.
|
|
17
|
+
The arc emerges from the moves; it is not a fixed wizard. You (the agent)
|
|
18
|
+
choose the next move; devague tracks state. LLM-proposed claims and honesty
|
|
19
|
+
conditions stay 'proposed' until the user confirms them.
|
|
20
|
+
|
|
21
|
+
Guided stages (the recommended sequence — drive them with the moves):
|
|
22
|
+
1. Announcement what are we saying shipped? [new]
|
|
23
|
+
2. Audience who needs this? [capture --kind audience]
|
|
24
|
+
3. After what changed for them? [capture --kind after_state]
|
|
25
|
+
4. Matter why is it worth doing? [capture --kind why_it_matters]
|
|
26
|
+
5. Before what pain made this necessary? [capture --kind before_state]
|
|
27
|
+
6. Honest what must be true for the announcement to be honest? [interrogate --honesty]
|
|
28
|
+
7. FAQ what hard questions remain? [interrogate --hard-question]
|
|
29
|
+
8. Boundaries what are we not promising? [capture --kind boundary]
|
|
30
|
+
9. Success how will we know? [capture --kind success_signal]
|
|
31
|
+
10. Spec what should be built? [converge -> export]
|
|
32
|
+
|
|
33
|
+
Moves:
|
|
34
|
+
new Start a frame from the announcement (pretend it shipped).
|
|
35
|
+
capture Record and classify a claim (audience, after_state, boundary, ...).
|
|
36
|
+
interrogate Pressure-test a claim: honesty conditions, hard questions, contradictions.
|
|
37
|
+
confirm Confirm a claim or honesty condition (user-only — no fabricated rigor).
|
|
38
|
+
reject Reject a claim or honesty condition.
|
|
39
|
+
park Move uncertainty into first-class open vagueness instead of forcing an answer.
|
|
40
|
+
converge Check whether the frame is solid enough to export a spec.
|
|
41
|
+
export Write the buildable spec — only once the frame converges.
|
|
42
|
+
show Render the Announcement Frame.
|
|
43
|
+
list List frames.
|
|
44
|
+
|
|
45
|
+
devague is NOT:
|
|
46
|
+
- a wizard (no fixed prompt sequence)
|
|
47
|
+
- a scripted questionnaire (you don't read questions off a form)
|
|
48
|
+
- a PRD generator (it never invents content to fill a template)
|
|
49
|
+
|
|
50
|
+
Operating rules (the anti-fabrication contract — do not violate):
|
|
51
|
+
- LLM proposals stay proposed — capture your own ideas with --origin llm; never confirm your own proposal. Confirmation is a user-only decision.
|
|
52
|
+
- Honesty conditions route through the user — propose freely with 'interrogate --honesty'; the user owns whether each one holds.
|
|
53
|
+
- Park real unknowns instead of papering over them — 'park' a genuine unknown rather than writing confident prose that hides the gap.
|
|
54
|
+
- Converge, don't vibe — 'export' is gated on 'converge'; resolve every listed gap instead of declaring readiness on a hunch.
|
|
55
|
+
- Order is adaptive — the ten stages are an artifact shape, not a mandatory conversation order; capture what the user gives you and circle back.
|
|
56
|
+
|
|
57
|
+
Assign-to-workforce: parallel plan execution via subagent-driven development
|
|
58
|
+
When: Once a plan converges (all targets covered, all tasks have acceptance criteria, dependency graph is acyclic), you can fan out its waves to parallel agents working in isolated git worktrees.
|
|
59
|
+
Prerequisites: A converged plan with deterministic dependency waves (devague plan waves).
|
|
60
|
+
Human gates (3): The human approves at exactly three points: (1) the exported spec, (2) the implementation split plan (plan/tasks map, per-task agent/model assignment, go/no-go to workforce), and (3) the final PR. The human is NOT in the per-task worktree-merge loop.
|
|
61
|
+
Safety: Each task runs in an isolated git worktree (one per task per wave). This keeps file-contention safe: overlapping same-file changes surface as merge conflicts at reconcile time, not live races.
|
|
62
|
+
Main agent: The main agent gates each subagent worktree merge with TDD: tests pass before AND after merge. No human per-task merge decision.
|
|
63
|
+
TDD: Each task carries TDD acceptance criteria (tests first) scoped tightly enough for a simpler/cheaper model to build. The tests validate that the task was built correctly — no re-deriving the design needed.
|
|
64
|
+
Scope: devague itself does not orchestrate: it does not spawn subagents, manage worktrees, mark tasks done, or pick a backend. Orchestration is a cited skill convention (assign-to-workforce), not part of the deterministic CLI.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
Full portable guidance for any assisting model:
|
|
68
|
+
https://github.com/agentculture/devague/blob/main/docs/llm-guidance.md
|
|
69
|
+
(in the devague repo: docs/llm-guidance.md)
|
|
70
|
+
Agent-agnostic; your repo-specific agreements live in your agent's main
|
|
71
|
+
instruction file — AGENTS.md, CLAUDE.md, a system prompt — not there.
|
|
72
|
+
|
|
73
|
+
- [learn](learn.md)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: devague learn
|
|
3
|
+
parent: devague reference
|
|
4
|
+
sites: [culture]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# `devague learn`
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"assign_to_workforce": {
|
|
12
|
+
"human_gates": "The human approves at exactly three points: (1) the exported spec, (2) the implementation split plan (plan/tasks map, per-task agent/model assignment, go/no-go to workforce), and (3) the final PR. The human is NOT in the per-task worktree-merge loop.",
|
|
13
|
+
"main_agent_merge_gate": "The main agent gates each subagent worktree merge with TDD: tests pass before AND after merge. No human per-task merge decision.",
|
|
14
|
+
"not_orchestration": "devague itself does not orchestrate: it does not spawn subagents, manage worktrees, mark tasks done, or pick a backend. Orchestration is a cited skill convention (assign-to-workforce), not part of the deterministic CLI.",
|
|
15
|
+
"prerequisites": "A converged plan with deterministic dependency waves (devague plan waves).",
|
|
16
|
+
"tdd_acceptance_criteria": "Each task carries TDD acceptance criteria (tests first) scoped tightly enough for a simpler/cheaper model to build. The tests validate that the task was built correctly \u2014 no re-deriving the design needed.",
|
|
17
|
+
"title": "Assign-to-workforce: parallel plan execution",
|
|
18
|
+
"when_to_fan_out": "Once a plan converges (all targets covered, all tasks have acceptance criteria, dependency graph is acyclic), you can fan out its waves to parallel agents working in isolated git worktrees.",
|
|
19
|
+
"worktree_isolation": "Each task runs in an isolated git worktree (one per task per wave). This keeps file-contention safe: overlapping same-file changes surface as merge conflicts at reconcile time, not live races."
|
|
20
|
+
},
|
|
21
|
+
"first_question": "What's the announcement?",
|
|
22
|
+
"guidance_doc": "https://github.com/agentculture/devague/blob/main/docs/llm-guidance.md",
|
|
23
|
+
"guidance_doc_repo_path": "docs/llm-guidance.md",
|
|
24
|
+
"moves": [
|
|
25
|
+
"new",
|
|
26
|
+
"capture",
|
|
27
|
+
"interrogate",
|
|
28
|
+
"confirm",
|
|
29
|
+
"reject",
|
|
30
|
+
"park",
|
|
31
|
+
"converge",
|
|
32
|
+
"export",
|
|
33
|
+
"show",
|
|
34
|
+
"list"
|
|
35
|
+
],
|
|
36
|
+
"not_a": [
|
|
37
|
+
"a wizard (no fixed prompt sequence)",
|
|
38
|
+
"a scripted questionnaire (you don't read questions off a form)",
|
|
39
|
+
"a PRD generator (it never invents content to fill a template)"
|
|
40
|
+
],
|
|
41
|
+
"operating_rules": [
|
|
42
|
+
"LLM proposals stay proposed \u2014 capture your own ideas with --origin llm; never confirm your own proposal. Confirmation is a user-only decision.",
|
|
43
|
+
"Honesty conditions route through the user \u2014 propose freely with 'interrogate --honesty'; the user owns whether each one holds.",
|
|
44
|
+
"Park real unknowns instead of papering over them \u2014 'park' a genuine unknown rather than writing confident prose that hides the gap.",
|
|
45
|
+
"Converge, don't vibe \u2014 'export' is gated on 'converge'; resolve every listed gap instead of declaring readiness on a hunch.",
|
|
46
|
+
"Order is adaptive \u2014 the ten stages are an artifact shape, not a mandatory conversation order; capture what the user gives you and circle back."
|
|
47
|
+
],
|
|
48
|
+
"stages": [
|
|
49
|
+
{
|
|
50
|
+
"move": "new",
|
|
51
|
+
"name": "Announcement",
|
|
52
|
+
"prompt": "what are we saying shipped?",
|
|
53
|
+
"step": 1
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"move": "capture --kind audience",
|
|
57
|
+
"name": "Audience",
|
|
58
|
+
"prompt": "who needs this?",
|
|
59
|
+
"step": 2
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"move": "capture --kind after_state",
|
|
63
|
+
"name": "After",
|
|
64
|
+
"prompt": "what changed for them?",
|
|
65
|
+
"step": 3
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"move": "capture --kind why_it_matters",
|
|
69
|
+
"name": "Matter",
|
|
70
|
+
"prompt": "why is it worth doing?",
|
|
71
|
+
"step": 4
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"move": "capture --kind before_state",
|
|
75
|
+
"name": "Before",
|
|
76
|
+
"prompt": "what pain made this necessary?",
|
|
77
|
+
"step": 5
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"move": "interrogate --honesty",
|
|
81
|
+
"name": "Honest",
|
|
82
|
+
"prompt": "what must be true for the announcement to be honest?",
|
|
83
|
+
"step": 6
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"move": "interrogate --hard-question",
|
|
87
|
+
"name": "FAQ",
|
|
88
|
+
"prompt": "what hard questions remain?",
|
|
89
|
+
"step": 7
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"move": "capture --kind boundary",
|
|
93
|
+
"name": "Boundaries",
|
|
94
|
+
"prompt": "what are we not promising?",
|
|
95
|
+
"step": 8
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"move": "capture --kind success_signal",
|
|
99
|
+
"name": "Success",
|
|
100
|
+
"prompt": "how will we know?",
|
|
101
|
+
"step": 9
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"move": "converge -> export",
|
|
105
|
+
"name": "Spec",
|
|
106
|
+
"prompt": "what should be built?",
|
|
107
|
+
"step": 10
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"summary": "devague turns a vague idea into a buildable spec by working backwards.\n\nFirst question: What's the announcement?\n Pretend this shipped successfully. What would you announce to users, teammates, or yourself?\n\nStart from that announcement, then build an Announcement Frame by capturing\nclaims, interrogating them, parking what's still vague, and converging.\nThe arc emerges from the moves; it is not a fixed wizard. You (the agent)\nchoose the next move; devague tracks state. LLM-proposed claims and honesty\nconditions stay 'proposed' until the user confirms them.\n\nGuided stages (the recommended sequence \u2014 drive them with the moves):\n 1. Announcement what are we saying shipped? [new]\n 2. Audience who needs this? [capture --kind audience]\n 3. After what changed for them? [capture --kind after_state]\n 4. Matter why is it worth doing? [capture --kind why_it_matters]\n 5. Before what pain made this necessary? [capture --kind before_state]\n 6. Honest what must be true for the announcement to be honest? [interrogate --honesty]\n 7. FAQ what hard questions remain? [interrogate --hard-question]\n 8. Boundaries what are we not promising? [capture --kind boundary]\n 9. Success how will we know? [capture --kind success_signal]\n 10. Spec what should be built? [converge -> export]\n\nMoves:\n new Start a frame from the announcement (pretend it shipped).\n capture Record and classify a claim (audience, after_state, boundary, ...).\n interrogate Pressure-test a claim: honesty conditions, hard questions, contradictions.\n confirm Confirm a claim or honesty condition (user-only \u2014 no fabricated rigor).\n reject Reject a claim or honesty condition.\n park Move uncertainty into first-class open vagueness instead of forcing an answer.\n converge Check whether the frame is solid enough to export a spec.\n export Write the buildable spec \u2014 only once the frame converges.\n show Render the Announcement Frame.\n list List frames.\n\ndevague is NOT:\n - a wizard (no fixed prompt sequence)\n - a scripted questionnaire (you don't read questions off a form)\n - a PRD generator (it never invents content to fill a template)\n\nOperating rules (the anti-fabrication contract \u2014 do not violate):\n - LLM proposals stay proposed \u2014 capture your own ideas with --origin llm; never confirm your own proposal. Confirmation is a user-only decision.\n - Honesty conditions route through the user \u2014 propose freely with 'interrogate --honesty'; the user owns whether each one holds.\n - Park real unknowns instead of papering over them \u2014 'park' a genuine unknown rather than writing confident prose that hides the gap.\n - Converge, don't vibe \u2014 'export' is gated on 'converge'; resolve every listed gap instead of declaring readiness on a hunch.\n - Order is adaptive \u2014 the ten stages are an artifact shape, not a mandatory conversation order; capture what the user gives you and circle back.\n\nAssign-to-workforce: parallel plan execution via subagent-driven development\n When: Once a plan converges (all targets covered, all tasks have acceptance criteria, dependency graph is acyclic), you can fan out its waves to parallel agents working in isolated git worktrees.\n Prerequisites: A converged plan with deterministic dependency waves (devague plan waves).\n Human gates (3): The human approves at exactly three points: (1) the exported spec, (2) the implementation split plan (plan/tasks map, per-task agent/model assignment, go/no-go to workforce), and (3) the final PR. The human is NOT in the per-task worktree-merge loop.\n Safety: Each task runs in an isolated git worktree (one per task per wave). This keeps file-contention safe: overlapping same-file changes surface as merge conflicts at reconcile time, not live races.\n Main agent: The main agent gates each subagent worktree merge with TDD: tests pass before AND after merge. No human per-task merge decision.\n TDD: Each task carries TDD acceptance criteria (tests first) scoped tightly enough for a simpler/cheaper model to build. The tests validate that the task was built correctly \u2014 no re-deriving the design needed.\n Scope: devague itself does not orchestrate: it does not spawn subagents, manage worktrees, mark tasks done, or pick a backend. Orchestration is a cited skill convention (assign-to-workforce), not part of the deterministic CLI.\n\n\nFull portable guidance for any assisting model:\n https://github.com/agentculture/devague/blob/main/docs/llm-guidance.md\n (in the devague repo: docs/llm-guidance.md)\nAgent-agnostic; your repo-specific agreements live in your agent's main\ninstruction file \u2014 AGENTS.md, CLAUDE.md, a system prompt \u2014 not there.",
|
|
111
|
+
"supporting_prompt": "Pretend this shipped successfully. What would you announce to users, teammates, or yourself?",
|
|
112
|
+
"tool": "devague",
|
|
113
|
+
"version": "0.10.0"
|
|
114
|
+
}
|
|
115
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: lecodeur
|
|
3
|
+
parent: "Resident Agents"
|
|
4
|
+
nav_order: 8
|
|
5
|
+
permalink: /lecodeur/
|
|
6
|
+
sites: [culture]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# lecodeur
|
|
10
|
+
|
|
11
|
+
**What it is.** *"Le codeur" — the coder.* The local **coding** agent of the
|
|
12
|
+
Culture mesh: a resident that implements, edits, and tests code. The "doer" to
|
|
13
|
+
[lepenseur](/lepenseur/)'s "thinker".
|
|
14
|
+
|
|
15
|
+
**Why you'd reach for it.** You want changes actually made — files written,
|
|
16
|
+
edits applied, tests run — by a resident that stays on your own hardware rather
|
|
17
|
+
than a hosted model. lecodeur is the half of the pair that turns a plan into a
|
|
18
|
+
working diff.
|
|
19
|
+
|
|
20
|
+
**Where it sits.** *Resident Agents.* The "coder" half of the thinker/coder
|
|
21
|
+
pair — [lepenseur](/lepenseur/) reasons, lecodeur builds. Related:
|
|
22
|
+
[lepenseur](/lepenseur/), [steward](/steward/).
|
|
23
|
+
|
|
24
|
+
**How to reach it.** Install with `uv tool install lecodeur`; it lives on the
|
|
25
|
+
mesh and is reached through Culture chat. Like every AFI binary it answers
|
|
26
|
+
`lecodeur learn` and `lecodeur explain <topic>` (both with `--json`).
|
|
27
|
+
|
|
28
|
+
[Reference →](/docs/lecodeur/reference/)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: lecodeur reference
|
|
3
|
+
parent: lecodeur
|
|
4
|
+
nav_order: 1
|
|
5
|
+
sites: [culture]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# lecodeur reference
|
|
9
|
+
|
|
10
|
+
The local coding agent of the Culture mesh — implements, edits, and tests code (the doer to lepenseur's thinker).
|
|
11
|
+
|
|
12
|
+
- [learn](learn.md)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: lecodeur learn
|
|
3
|
+
parent: lecodeur reference
|
|
4
|
+
sites: [culture]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# `lecodeur learn`
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"commands": [
|
|
12
|
+
{
|
|
13
|
+
"path": [
|
|
14
|
+
"whoami"
|
|
15
|
+
],
|
|
16
|
+
"summary": "Identity probe (nick, version, backend, model)."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": [
|
|
20
|
+
"learn"
|
|
21
|
+
],
|
|
22
|
+
"summary": "Self-teaching prompt."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": [
|
|
26
|
+
"explain"
|
|
27
|
+
],
|
|
28
|
+
"summary": "Markdown docs by topic path."
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"exit_codes": {
|
|
32
|
+
"0": "success",
|
|
33
|
+
"1": "user-input error",
|
|
34
|
+
"2": "environment/setup error"
|
|
35
|
+
},
|
|
36
|
+
"explain_pointer": "lecodeur explain <path> (e.g. 'lecodeur explain backend')",
|
|
37
|
+
"json_support": true,
|
|
38
|
+
"purpose": "The local coding agent of the Culture mesh: implements, edits, and tests code. The 'doer' to lepenseur's 'thinker'.",
|
|
39
|
+
"siblings": {
|
|
40
|
+
"closest": "lepenseur",
|
|
41
|
+
"next": "daria"
|
|
42
|
+
},
|
|
43
|
+
"tool": "lecodeur",
|
|
44
|
+
"version": "0.1.0"
|
|
45
|
+
}
|
|
46
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: lepenseur
|
|
3
|
+
parent: "Resident Agents"
|
|
4
|
+
nav_order: 7
|
|
5
|
+
permalink: /lepenseur/
|
|
6
|
+
sites: [culture]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# lepenseur
|
|
10
|
+
|
|
11
|
+
**What it is.** *"Le penseur" — the thinker.* The local **thinking** agent of
|
|
12
|
+
the Culture mesh: a long-lived resident that reasons, plans, and analyzes
|
|
13
|
+
deeply. It is a thinker, not an actor — its entire act surface is posting and
|
|
14
|
+
replying on Culture chat and creating files.
|
|
15
|
+
|
|
16
|
+
**Why you'd reach for it.** You want a resident to think a problem through —
|
|
17
|
+
weigh options, sketch a plan, pressure-test an idea — rather than edit code.
|
|
18
|
+
lepenseur runs a locally-hosted vLLM reasoning model
|
|
19
|
+
(`nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4`) over the `acp` backend, so
|
|
20
|
+
the reasoning stays on your own hardware.
|
|
21
|
+
|
|
22
|
+
**Where it sits.** *Resident Agents.* The "thinker" half of the thinker/coder
|
|
23
|
+
pair — pair it with [lecodeur](/lecodeur/) when reasoning needs to become
|
|
24
|
+
code. Related: [lecodeur](/lecodeur/), [steward](/steward/).
|
|
25
|
+
|
|
26
|
+
**How to reach it.** Install with `uv tool install lepenseur`; it lives on the
|
|
27
|
+
mesh and is reached through Culture chat. Like every AFI binary it answers
|
|
28
|
+
`lepenseur learn` and `lepenseur explain <topic>` (both with `--json`).
|
|
29
|
+
|
|
30
|
+
[Reference →](/docs/lepenseur/reference/)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: lepenseur learn
|
|
3
|
+
parent: lepenseur reference
|
|
4
|
+
sites: [culture]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# `lepenseur learn`
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"commands": [
|
|
12
|
+
{
|
|
13
|
+
"path": [
|
|
14
|
+
"whoami"
|
|
15
|
+
],
|
|
16
|
+
"summary": "Identity probe (nick, version, backend, model)."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": [
|
|
20
|
+
"learn"
|
|
21
|
+
],
|
|
22
|
+
"summary": "Self-teaching prompt."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": [
|
|
26
|
+
"explain"
|
|
27
|
+
],
|
|
28
|
+
"summary": "Markdown docs by topic path."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"path": [
|
|
32
|
+
"overview"
|
|
33
|
+
],
|
|
34
|
+
"summary": "Descriptive snapshot of the agent."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"path": [
|
|
38
|
+
"doctor"
|
|
39
|
+
],
|
|
40
|
+
"summary": "Self-diagnosis (stub)."
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"exit_codes": {
|
|
44
|
+
"0": "success",
|
|
45
|
+
"1": "user-input error",
|
|
46
|
+
"2": "environment/setup error"
|
|
47
|
+
},
|
|
48
|
+
"explain_pointer": "lepenseur explain <path> (e.g. 'lepenseur explain backend')",
|
|
49
|
+
"json_support": true,
|
|
50
|
+
"purpose": "The local thinking agent of the Culture mesh: reasons, plans, and analyzes deeply. The 'thinker' to lecodeur's 'coder'.",
|
|
51
|
+
"siblings": {
|
|
52
|
+
"closest": "lecodeur",
|
|
53
|
+
"next": "daria"
|
|
54
|
+
},
|
|
55
|
+
"tool": "lepenseur",
|
|
56
|
+
"version": "0.1.0"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
@@ -26,16 +26,16 @@ def test_overview_text_lists_all_categories() -> None:
|
|
|
26
26
|
def test_overview_text_counts_total_repos() -> None:
|
|
27
27
|
result = _run()
|
|
28
28
|
assert result.returncode == 0, result.stderr
|
|
29
|
-
assert "
|
|
29
|
+
assert "24 repos" in result.stdout
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def test_overview_json_shape() -> None:
|
|
33
33
|
result = _run("--json")
|
|
34
34
|
assert result.returncode == 0, result.stderr
|
|
35
35
|
payload = json.loads(result.stdout)
|
|
36
|
-
assert payload["total"] ==
|
|
36
|
+
assert payload["total"] == 24
|
|
37
37
|
assert set(payload["by_category"].keys()) == {
|
|
38
38
|
"core-runtime", "workspace-experience", "identity-secrets",
|
|
39
39
|
"resident-culture", "resident-domain", "org-site",
|
|
40
40
|
}
|
|
41
|
-
assert sum(len(v) for v in payload["by_category"].values()) ==
|
|
41
|
+
assert sum(len(v) for v in payload["by_category"].values()) == 24
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/.claude/skills/communicate/scripts/templates/skill-update-brief.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/audits/2026-05-17-existing-site-docs-audit.md
RENAMED
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/audits/2026-05-18-sitemap-robots-verification.md
RENAMED
|
File without changes
|
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/plans/2026-05-17-culture-dev-marketing-rebuild.md
RENAMED
|
File without changes
|
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-14-culture-site-migration-design.md
RENAMED
|
File without changes
|
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-18-agentculture-coverage-audit.md
RENAMED
|
File without changes
|
{katvan-0.3.2 → katvan-0.3.3}/docs/superpowers/specs/2026-05-18-agex-docs-absorption-design.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|