infiquetra/house-style
Claude-only package. The portable core is empty of runtime behaviour by design: no scripts, no skills, and no executable. Two reference documents sit at the package root as text other packages copy. The behaviour Claude Code loads is the output style under com.infiquetra.claude/, declared by the outputStyles key because that key replaces the default output-styles/ directory.
Changelog
[0.1.1] - 2026-09-22
0.1.1 — imported from infiquetra-claude-plugins@acc99fe7 (upstream 0.1.0); authored here from this commit; no provenance manifest from now on.
Changed
- The output style moved from
output-styles/at the package root tocom.infiquetra.claude/output-styles/house-style.md. Claude Code's plugins reference names the default directoryoutput-styles/and the manifest keyoutputStyles, and that key replaces the default scan rather than adding to it (https://code.claude.com/docs/en/plugins-reference, read 2026-09-22). This catalog forbidsoutput-styles/at a package root, because another harness would read it as portable core. The root Claude manifest therefore setsoutputStylesto./com.infiquetra.claude/output-styles/. Upstream omitted the key because the style sat at the default location, which this layout cannot keep. - The patch version moved from upstream 0.1.0 to 0.1.1 to mark the authored cut. The portable manifest, the root Claude manifest, the adapter manifest, and the marketplace entry all state 0.1.1. There is no MCP server, so there is no
serverInfo.versionto keep in step. - The portable
plugin.jsondescription now says the package is Claude-only and that the portable runtime is empty. The two reference documents stayed atreferences/, which is where the importer classifies them: they are text other packages copy, not a Claude runtime surface. - The adapter manifest kept every upstream field except the version.
relocate-claude-manifestpreserves those bytes, and the marketplace readsrepositoryfrom the root Claude manifest, which already names this repository.
Tests
No upstream test was dropped.
tests/test_house_style_contract.py was carried from the upstream repo-wide suite and rewritten where its premise was the upstream layout. Two assertions changed: the style file is required under com.infiquetra.claude/output-styles/ and forbidden at the package root and under .claude-plugin/, and the root Claude manifest is required to declare outputStyles pointing at that directory. The frontmatter, placard, tell, keyword, and coherence assertions are unchanged. The upstream mutation checks still prove those checkers go red when the contracted text is removed.
tools/output_style_scorer.py and tests/test_output_style_scorer.py were not carried. The repo-wide triage marks that pair as a maintainer transcript tool, not a contract of this package, and this package ships no code for it to score from.
Unchanged
The style file, the subagent presentation preamble, and the Claude instructions annotation are the upstream bytes. Nothing in them was rewritten to make a test pass. The package reaches no Fleet Core module, so it declares no fleet-bundle.json. It has no command and no script, so no skill was authored over one.
[0.1.0] - 2026-08-08
Added
Initial release (issue #704). This ships the whole plugin at once — the plan built it across several units, but nothing prior to this shipped, so there is no earlier version to diff against.
output-styles/house-style.md, an output style governing the SHAPE of a main-thread turn: which turns are full orientations and which are deltas, the three-line closing block whose last line is a decision answerable with "go", when a visual is required and when it is forbidden, and how a subagent's return is relayed. It also carries two mechanical enforcement tests — bare identifiers and abbreviations — that sit beside the language rules in~/.claude/CLAUDE.mdwithout rewriting them. Word-level rules such as leading with the answer stay in~/.claude/CLAUDE.mdand in the subagent preamble below; the style does not restate them.keep-coding-instructions: trueis set literally;force-for-pluginis not set, so the operator's own style selection is never overridden. A "Placard" section states plainly what the style suppresses. A single-line tell,::house-style::, is emitted on the main thread only (never by subagents) as a machine-checkable marker that the style is active on a given transcript.references/subagent-presentation-preamble.md, the canonical presentation-contract text, authored once and consumed twice: copied verbatim into 36 plugin agent definition files (Lever A, the reach path this plan calls the agent-definition route) and read by saga's workflow emitter to stamp the same text onto every emittedagent()prompt (Lever B, the emitter-funnel route). The two levers are two delivery paths for one piece of text, not two different texts.references/claude-md-annotation.md, recording why the seven Plain English rules stay in~/.claude/CLAUDE.mdrather than moving into this style:CLAUDE.mdreaches every subagent a session spawns, while an output style reaches only the main thread.plugin.jsonmanifest andREADME.md. NooutputStyleskey is set — the defaultoutput-styles/location is auto-discovered by Claude Code and that key exists only to override it.
Not in this release
- Route (c), the main-thread stamp that would additionally cover the largest block of subagent output written directly by the main thread rather than relayed from a subagent — deferred to follow-up work by the plan's KTD5 (a Key Technical Decision, a recorded design choice with its rejected alternatives), not cancelled.
- Target values for the success criteria. The requirements document carries directions ("up, substantially") and no numbers; picking them is deferred to planning and is not invented here.
- Any measured effect of this release. The preamble governs no subagent until the plugin cache is
updated AND a new session starts, so an "after" measurement taken before that reads the old
behaviour.
README.mdstates the four-step chain.
Note on the closing-ceremony size threshold
The style ships a provisional threshold — roughly six lines — set by feel rather than by measurement, because requirement R9 asks for one and a state-change test alone never exempts a short turn that did work. It is expected to move after first contact.