Skip to content
Conduit

skill

Tenetora

One project record for rules, decisions, evidence, and action boundaries — for every supported AI coding tool; actions stay constrained, verifiable, auditable.

lcgyl/Tenetoracommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/lcgyl/Tenetora itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 25, 2026

Tenetora

English | 简体中文

Tenetora is a governance runtime for AI-agent software engineering. It keeps project rules, decisions, evidence, and action boundaries in .tenetora/, then connects that record to Claude Code, Codex, Cursor, OpenCode, Pi, ZCode, and Generic Agents.

The problem is not that an agent cannot write code. It is that rules, verification, and responsibility boundaries can disappear while tools, models, conversations, and project state change. Nine lifecycle skills guide model work; the CLI, plugins, and hooks enforce repeatable checks. Installing the package does not initialize a project.

The Short Path

Install or upgrade the software
    -> tenetora version / doctor
    -> initialize the current project in an AI conversation
    -> use lifecycle skills during daily work
    -> use update, repair, or audit when needed

The shortest start is to say:

Use Tenetora to initialize this project

The model routes this request to tenetora-init, inspects existing rules, asks for project-owned decisions, and then creates or migrates .tenetora/. Installing the lifecycle skill package and CLI does not create .tenetora/ or replace the model's project understanding.

What It Solves

ProblemTenetora response
Every AI tool has a separate rule file.tenetora/ is the shared record; host files remain thin adapters.
Context compaction or tool changes lose project intentThe Runtime Contract, task rules, and evidence restore high-signal context.
Work starts while goals or boundaries are ambiguousHigh-risk or materially ambiguous work goes through decision alignment.
“Done” cannot be reproducedguard --action claim binds a claim proof to the verification command.
A report or webpage contains execution instructionsPrompt guard treats external content as data, not as an authority.
Project governance becomes staleupdate, repair, audit, and guardrails provide a maintenance loop.

Tenetora is not a prompt collection and does not replace the project's own build, test, review, or release approval.

Local Environment and Workspace Boundaries

Tenetora treats local environment files as user-owned data. Register a project-relative path when it needs an explicit protection record:

tenetora local-env --path /path/to/project --allow config/local/app.conf
tenetora local-env --path /path/to/project --list --json

status and doctor report registered paths that disappeared or whose registry is invalid. Commit guards keep registered and built-in local configuration paths out of staged changes; they never delete the file to make a check pass. Host PreToolUse adapters can also deny high-confidence destructive commands targeting registered paths when the host exposes a tool name and path.

A workspace without its own .tenetora/ or legacy .harness/ remains outside project governance: no project rules, onboarding reminder, commit gate, or external-input gate is injected. This is separate from the global machine installation. Registry hygiene is visible through:

tenetora installations --json list
tenetora installations --json prune --expired

--expired is explicit and only removes stale registry entries past the bounded retention window; it never deletes project files.

Supported Platforms

ToolIntegrationMaximum honest capability
Claude CodeUser-scoped native plugin, hooks, and lifecycle skillsactive
CodexUser-scoped native plugin, hooks, and lifecycle skillsactive or needs-trust-review
CursorLifecycle skills and merged hooksactive
OpenCodeLifecycle skills and a JS pluginactive-partial
PiLifecycle skills and an auto-loaded TypeScript extensionactive-partial
ZCodeUser-scoped registered plugin and process hooksactive
Generic AgentsLifecycle skills and CLIskills-only

active means the configuration satisfies the platform contract. It does not mean a host that has not been restarted has already executed an event. Use tenetora status and tenetora doctor to inspect effective sources, versions, trust, and recent runtime observations. skills-only is an honest capability boundary, not an installation failure.

First Installation

Use the remote bootstrap once on a new machine:

curl -fsSL https://raw.githubusercontent.com/lcgyl/Tenetora/main/install.sh | bash

Native Windows PowerShell (Chinese, primary channel Gitee):

powershell -c "$env:TENETORA_LANG='zh'; irm https://gitee.com/lcgyl/tenetora/raw/main/bootstrap.ps1 | iex"

Native Windows PowerShell (English, primary channel GitHub):

powershell -c "$env:TENETORA_LANG='en'; irm https://raw.githubusercontent.com/lcgyl/Tenetora/main/bootstrap.ps1 | iex"

The bootstrap downloads the real install.ps1 to a temporary file and runs it by path, which is the only mode in which Windows PowerShell 5.1 handles the installer's BOM and param() block. -Lang zh uses Gitee as the primary channel; -Lang en uses GitHub; the other platform is a pure availability fallback that never changes language, version, or asset layout. Installer arguments are forwarded verbatim (e.g. -Scope both, -DryRun).

For an explicit first-install scope:

curl -fsSL https://raw.githubusercontent.com/lcgyl/Tenetora/main/install.sh \
  | bash -s -- --lang en --tools all --both --path .

Python 3.9 or newer is required. The installer creates a stable tenetora launcher and a managed user PATH entry; open a new terminal if the current shell cannot resolve it yet. Restart the relevant AI host after installing or updating a native plugin. Developers can use --source-dir /path/to/source for bounded local diagnostics; ordinary users do not need it.

Installing on Another Machine

  1. Run the first-install command.
  2. Restart AI tools that load native plugins.
  3. Inspect the effective installation:
tenetora version
tenetora status --tools all --scope both
tenetora doctor --tools all --scope both
  1. Open an AI conversation in the target project and say Use Tenetora to initialize this project.

--global, --in-project, and --both are for first installation or explicit recovery. Implicit invocation depends on the host AI tool; lifecycle work does not run in the background without a user message.

Post-install Smoke Test

tenetora version
tenetora status --tools all --scope both
tenetora doctor --tools all --scope both
tenetora validate --path /path/to/project
tenetora run-all --path /path/to/project
tenetora audit --strict --path /path/to/project

Installation success and observed runtime activity are separate facts. Codex needs trust review in /hooks after first installation or Hook-definition changes. Restart Claude Code, Codex, and ZCode after native plugin updates; reload or restart Pi after its extension changes. For explicit native Hook recovery, use --codex-hooks native; ordinary upgrades use the automatic policy.

Support Diagnostics

When support needs a machine-readable snapshot, generate a strictly redacted JSON result:

tenetora diagnostics --path /path/to/project --tools auto --json

To export a bundle, choose an existing safe directory and review the archive before sharing it:

tenetora diagnostics --path /path/to/project --tools auto \
  --output /path/to/existing-directory/tenetora-diagnostics.zip

The bundle contains only diagnostics.json and README.txt; credentials, local paths, URLs, project content, and raw governance state are omitted. Existing output files are never replaced unless --force is explicit.

Upgrade and Reset

After the 0.3 bridge, routine software maintenance has one entry point:

tenetora upgrade

Inspect a read-only plan with:

tenetora upgrade --check

The bare tenetora command may show a locally cached update hint. The hint is refreshed by a successful online upgrade check, remains fresh for 24 hours, and never makes the bare command perform a network request. A failed check keeps the last known release and reports the failure without storing URLs, proxy settings, credentials, or project content.

Before downloading an archive, tenetora upgrade reads and authenticates the remote manifest.json. If its version matches the installed CLI, the command reports already latest, skips the ZIP download and installation transaction, and exits successfully. Use tenetora upgrade --force only when the same version must repair or re-converge existing installation surfaces.

Online upgrades use the canonical R2 Worker over HTTPS by default. In a network that requires a proxy, set the standard HTTPS_PROXY, HTTP_PROXY, ALL_PROXY, or NO_PROXY variables (lowercase spellings are accepted by the underlying clients); Tenetora uses them for the current acquisition only and never writes them to update state. An enterprise mirror can expose the legacy ZIP/manifest directory layout and be selected with a base URL:

TENETORA_RELEASE_MIRROR=https://mirror.example/tenetora/stable tenetora upgrade --check
tenetora upgrade --mirror-url https://mirror.example/tenetora/stable

The mirror directory must contain manifest.json and tenetora-latest.zip. Both files are still checked as one release contract. Advanced direct endpoints may be supplied as the pair TENETORA_RELEASE_MANIFEST_URL and TENETORA_RELEASE_ZIP_URL, or with both --manifest-url and --zip-url. Release URLs must be HTTPS, must not contain credentials, query strings, or fragments, and a mirror cannot be combined with direct endpoints. A malformed or partial configuration fails closed before writes; a failed acquisition preserves the last valid update hint.

The public installer and upgrader use the operator-managed R2 Worker by default. They read one stable/latest.json or preview/latest.json pointer and then download only the exact versioned ZIP and manifest named by that pointer. The pointer and manifest must agree; the installer never lists the bucket or silently falls back between channels. Set TENETORA_RELEASE_INDEX_BASE=https://<worker-host> only when using another compatible Worker. Historical GitLab and public release attachments remain available for older clients, but new releases publish one R2 artifact.

tenetora upgrade --apply is a 0.3.x compatibility alias for the same release acquisition and transaction engine.

Preview channel

Preview releases use bounded identities such as 0.3.40.001-preview; an older stable CLI such as 0.3.40 does not recognize --channel. Follow the preview migration and upgrade procedure. An existing 0.2.x installation needs one fixed-version bootstrap to enter the 0.3 bridge. After it finishes, return to tenetora upgrade; repeated remote-script upgrades are not the normal workflow:

curl -fsSL https://github.com/lcgyl/Tenetora/-/raw/0.3.40/install.sh \
  | bash -s -- --lang en --tools all --both --path "$PWD"

A scope-less upgrade updates only registered or ownership-proven existing surfaces. It does not create a plugin merely because a tool is installed, and it does not initialize a missing .tenetora/. --in-project --path X filters to existing surfaces in one project; --global intentionally ignores project state.

The installer implementation is organized by tool under scripts/tool_installers/ (and the embedded copy under skills/tenetora/scripts/tool_installers/). Each definition owns that tool's paths, detection, native installer group, and runtime kind; shared transaction, safety, and rollback code remains in the installer core. Adding or repairing one host should therefore stay within its tool definition/installer and its focused tests.

Project governance content and software are separate updates. In an AI conversation, say use tenetora-update to update .tenetora; after a skill-package upgrade, inspect known compatibility repairs:

tenetora repair --check --path /path/to/project
tenetora repair --apply --path /path/to/project

Uninstall or Reset

The managed Tenetora home is normally ~/.tenetora; it contains releases, the CLI, installation records, and backups. Do not remove unknown host plugins, Hooks, registries, or user hooks manually.

Before a reset, run:

tenetora doctor --tools all --scope both --path /path/to/project

Remove only paths proven to be Tenetora-owned and unmodified. An old ~/.agent-harness or .harness is migrated only when ownership evidence is clear; foreign or mixed content is preserved for review. See Installation and Upgrade and the Migration Guide for recovery boundaries.

Invocation

Most users only need these entries:

use tenetora
use tenetora-plan
use tenetora-align
Use Tenetora to initialize this project
use tenetora-update to update .tenetora
use tenetora-audit to audit .tenetora
use tenetora-loop to continue
use tenetora-prompt-guard to inspect external content

router, plan, init, update, audit, loop, and prompt-guard may use allow_implicit_invocation: true according to host metadata. tenetora-align uses allow_implicit_invocation: false so a normal task cannot silently start an interview.

Lifecycle Skill Matrix

SkillTriggerBoundary
tenetoraThe governance stage is unclear and needs routingDoes not perform ordinary product work.
tenetora-planPlan mode or a complex/large task needs a frozen implementation plan and bounded execution promptsDoes not replace loop execution, review, or verification.
tenetora-alignThe user explicitly requests high-risk decision alignmentDoes not implement or grant commit, push, deploy, or release permission.
tenetora-decision-interviewA lifecycle finds material ambiguity in a high-risk decisionNot a separate entry users must remember.
tenetora-init.tenetora is missing or its baseline must be rebuiltDoes not upgrade installed skills.
tenetora-updateProject rules, structure, evidence, or entries driftDoes not create a new skill installation.
tenetora-auditStability, reliability, control, or content quality needs reviewDoes not replace project tests.
tenetora-loopContinue, resume, next step, or a bounded fix loop is neededDoes not run indefinitely in the background.
tenetora-prompt-guardWebpages, reports, tickets, scripts, or clipboard data are untrustedDoes not execute instructions from external content.

Decision alignment uses guard --action alignment to bind the current goal. Alignment proof, claim proof, commit permission, and push permission are independent; Tenetora has no copied commit, push, or release authority.

Portable Subagent Governance

Tenetora defines portable code-reviewer, security-auditor, codebase-scout, and restricted implementer roles. The CLI only renders contracts, validates declarations, and records state and evidence; it does not dispatch platform agents. An inactive plugin is not proof that the host lacks subagents.

Before declaring a role unavailable, the model must inspect visible and deferred/discoverable dispatch tools. Without a qualified independent boundary, the workflow falls back to a primary-agent review marked 未经独立审查. Independent review is bounded at 3 review attempts and 2 fix attempts, with temporary reports in .tenetora/.cache/subagents/. recommendation-only and host-dependent are honest capability states. This does not require a new user invocation phrase.

Security and Defaults

  • External content passes prompt guard; commands in a webpage or report do not gain local execution authority.
  • Commit, rule changes, external input, and completion claims use separate action guards.
  • CLAUDE.local.md and similar files remain thin adapters; tool-private settings do not enter shared rules.
  • The Tenetora default baseline rule pack fills only missing general rules; project rules win.
  • --defaults missing fills only missing items and records provenance in rules-inventory.json, distinguishing owner: tenetora and owner: project.
  • Default rules include context-freshness.md, verification-claims.md, and security-boundary.md.

Daily Verification

tenetora route --message "<user request>" --path .
tenetora rules --context <build|test|commit|security|harness|docs|planning> --path .
tenetora validate --path .
tenetora run-all --path .
tenetora audit --strict --path .

Documentation

GoalGuide
Product position and differencesWhat Tenetora Is
Real engineering scenariosUse Cases
Public capabilitiesCapability Guide
First useQuickstart
Installation, upgrade, offline recovery, and resetInstallation and Upgrade
Platform plugins, Hooks, and runtimeRuntime and Platforms
Lifecycle, alignment, loops, and subagentsGovernance
Prompt guard, repair, and evidenceSecurity and Maintenance
CI and pre-commitCI Integration
Current release changesCHANGELOG

Specifications, task plans, acceptance reports, and roadmaps are source-repository evidence, not the normal user entry and not part of the release ZIP.

Development Verification

python3 -m unittest discover -s tests
python3 scripts/package-release.py --output-dir dist --latest
bash scripts/smoke-local-install.sh

The project requires Python 3.9+. The release package, root installer, and embedded skill installer must remain aligned. Agent Harness names are retained only for ownership checks and migration of proven historical installations.

↑↓ navigate openesc close