<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Active on Alwaldend</title>
		<link>https://www-staging.alwaldend.com/statuses/active/</link>
		<description>Recent content in Active on Alwaldend</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="https://www-staging.alwaldend.com/statuses/active/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Agents</title>
				<link>https://www-staging.alwaldend.com/docs/projects/agents/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/projects/agents/</guid>
				<description>&lt;h1 id=&#34;repository-agent-skills&#34;&gt;Repository agent skills&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#repository-agent-skills&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;This project owns the reusable cross-repository agent skills. Maintained&#xA;improvement work lives in this project&amp;rsquo;s &lt;a href=&#34;openspec/&#34;&gt;OpenSpec workspace&lt;/a&gt;. It&#xA;does not centralize component facts or runtime state: each fact remains&#xA;canonical at its natural owner.&lt;/p&gt;&#xA;&lt;h2 id=&#34;start-here&#34;&gt;Start here&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#start-here&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Document&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;openspec/changes/&#34;&gt;OpenSpec changes&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Maintained work, acceptance, and preserved goal history&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://github.com/alwaldend/src/blob/master/AGENTS.md&#34;&gt;Root agent guide&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Current repository-wide operating policy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Dated audits remain in&#xA;&lt;a href=&#34;https://www-staging.alwaldend.com/docs/infra/src/openspec/migration/&#34;&gt;migrated history&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ownership-boundaries&#34;&gt;Ownership boundaries&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ownership-boundaries&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;openspec/&lt;/code&gt; owns agent-system requirements, changes, and evidence;&#xA;&lt;a href=&#34;https://www-staging.alwaldend.com/docs/infra/src/openspec/migration/&#34;&gt;the migration map&lt;/a&gt; locates historical records.&lt;/li&gt;&#xA;&lt;li&gt;Other components own their specifications and changes under their own&#xA;&lt;code&gt;openspec/&lt;/code&gt; directory. &lt;code&gt;infra/src/openspec/&lt;/code&gt; describes repository evolution.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;skills/&lt;/code&gt; owns reusable cross-product, repository-wide agent procedures and&#xA;their development-time evaluations. A product-specific procedure belongs&#xA;with its product; a procedure that no narrower project genuinely owns lives&#xA;here rather than in a contrived local home.&lt;/li&gt;&#xA;&lt;li&gt;Product-specific skills remain with their project at&#xA;&lt;code&gt;projects/&amp;lt;project&amp;gt;/skills/&amp;lt;name&amp;gt;&lt;/code&gt;. Do not split one skill across owners.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;skill-packaging-and-discovery&#34;&gt;Skill packaging and discovery&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#skill-packaging-and-discovery&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every canonical skill is packaged as a &lt;code&gt;skill_library&lt;/code&gt; in its owning&#xA;directory.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Agents</title>
				<link>https://www-staging.alwaldend.com/projects/agents/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/projects/agents/</guid>
				<description>&lt;p&gt;This project owns the reusable, cross-project agent skills used across&#xA;this repository. Each skill is a procedure with its own scope and ownership&#xA;rules, so an agent loads the guidance it needs for the task at hand instead of&#xA;one large document.&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#features&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;One skill per procedure, with an explicit description and scope&lt;/li&gt;&#xA;&lt;li&gt;Discovery written into the agent skills directory from declared sources&lt;/li&gt;&#xA;&lt;li&gt;Product-specific skills stay with their product; only genuinely shared ones&#xA;live here&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Al</title>
				<link>https://www-staging.alwaldend.com/docs/projects/al/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/projects/al/</guid>
				<description>&lt;p&gt;AL is a command runner that prepares credentials and environment variables&#xA;through plugins, runs your command, and cleans up afterward. Its Bazel rules&#xA;package commands with their configuration and required plugins.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;al tool&lt;/code&gt; runs tools declared in AL configuration from a source-keyed executable&#xA;cache. With no &lt;code&gt;--config&lt;/code&gt;, it uses the repository-root &lt;code&gt;al.lua&lt;/code&gt;; explicit&#xA;&lt;code&gt;--config&lt;/code&gt; paths replace that default. Cache misses build the tool&amp;rsquo;s configured&#xA;Bazel label and publish the selected executable under&#xA;&lt;code&gt;$XDG_CACHE_HOME/al/tools&lt;/code&gt;. &lt;code&gt;AL_TOOL_CACHE&lt;/code&gt; or &lt;code&gt;tool --cache-root PATH&lt;/code&gt; selects&#xA;an alternate cache root.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Al</title>
				<link>https://www-staging.alwaldend.com/projects/al/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/projects/al/</guid>
				<description>&lt;p&gt;AL is a command runner that prepares credentials and environment&#xA;variables through plugins, runs your command, and cleans up afterward. Its Bazel&#xA;rules package commands together with the configuration and plugins they need.&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#features&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Plugin-based credential and environment preparation around any command&lt;/li&gt;&#xA;&lt;li&gt;Bazel rules that package a command with its configuration and plugins&lt;/li&gt;&#xA;&lt;li&gt;A source-keyed executable cache for running declared tools&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Bazel agent</title>
				<link>https://www-staging.alwaldend.com/docs/projects/bazel_agent/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/projects/bazel_agent/</guid>
				<description>&lt;p&gt;&lt;code&gt;bazel_agent&lt;/code&gt; is the repository Bazel entry point for agents. It keeps the&#xA;Bazel invocation behind a validated subcommand while consistently applying the&#xA;agent configuration:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_agent bazel test //path/to/package:all&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    -&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel test --config=agent //path/to/package:all&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;bazel&lt;/code&gt; is the only Bazel entry point, and it is a validated subcommand. The&#xA;runner accepts a known Bazel command after the &lt;code&gt;bazel&lt;/code&gt; keyword, rejects&#xA;arbitrary leading arguments, and places &lt;code&gt;--config=agent&lt;/code&gt; after the command.&#xA;Targets, command options, and arguments after the &lt;code&gt;--&lt;/code&gt; separator of a&#xA;&lt;code&gt;bazel run&lt;/code&gt; invocation pass through unchanged. Later options therefore retain&#xA;Bazel&amp;rsquo;s normal precedence and can override settings supplied by the agent&#xA;configuration. The runner resolves &lt;code&gt;bazel&lt;/code&gt; from &lt;code&gt;PATH&lt;/code&gt; and replaces itself&#xA;with that process, so signals and the final exit status are not mediated by&#xA;another wrapper process. Uses of the persistent Bazel server follow the host&#xA;Codex network policy; the &lt;code&gt;host-bot&lt;/code&gt; profile allows loopback so the&#xA;client-server connection is not blocked.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bazel agent</title>
				<link>https://www-staging.alwaldend.com/projects/bazel_agent/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/projects/bazel_agent/</guid>
				<description>&lt;p&gt;&lt;code&gt;bazel_agent&lt;/code&gt; is the Bazel entry point for agents working in this&#xA;repository. It keeps Bazel behind a validated subcommand while consistently&#xA;applying the agent configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#features&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Validated &lt;code&gt;bazel&lt;/code&gt; subcommand instead of arbitrary arguments&lt;/li&gt;&#xA;&lt;li&gt;Applies the agent configuration in the required position&lt;/li&gt;&#xA;&lt;li&gt;Preserves signals and exit status by replacing itself with the Bazel process&lt;/li&gt;&#xA;&lt;li&gt;Read-only &lt;code&gt;doctor&lt;/code&gt; diagnostics for runner and workspace state&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>F-Droid</title>
				<link>https://www-staging.alwaldend.com/docs/tools/fdroid/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/fdroid/</guid>
				<description>&lt;p&gt;Pinned &lt;code&gt;fdroidserver&lt;/code&gt; environment for local F-Droid builds. The wrapper&#xA;provisions an isolated Python virtualenv and delegates to &lt;code&gt;fdroid&lt;/code&gt;. Use&#xA;&lt;code&gt;tools/gradle/gradle-wrapper&lt;/code&gt; for the Android app&amp;rsquo;s Gradle build; this tool&#xA;only drives F-Droid metadata and local builds.&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#usage&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tools/fdroid/fdroid-wrapper &amp;lt;fdroid-subcommand&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run from an F-Droid data directory containing &lt;code&gt;config.yml&lt;/code&gt; and &lt;code&gt;metadata/&lt;/code&gt;.&#xA;Caches go under the workspace&amp;rsquo;s ignored &lt;code&gt;out/&lt;/code&gt; tree.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Gradle</title>
				<link>https://www-staging.alwaldend.com/docs/third_party/net_gradle_gradle/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/third_party/net_gradle_gradle/</guid>
				<description>&lt;p&gt;Pinned Gradle 8.13 binary distribution from the primary publisher.&lt;/p&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#links&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Source code: &lt;a href=&#34;https://github.com/gradle/gradle/tree/v8.13.0&#34;&gt;https://github.com/gradle/gradle/tree/v8.13.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Maven Install Gradle Converter</title>
				<link>https://www-staging.alwaldend.com/docs/tools/maven_install_gradle_converter/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/maven_install_gradle_converter/</guid>
				<description>&lt;p&gt;Converts &lt;code&gt;rules_jvm_external&lt;/code&gt; &lt;code&gt;maven_install.json&lt;/code&gt; lock files into Gradle&#xA;version catalogs and dependency verification metadata so Bazel-built Android&#xA;apps can maintain the parallel Gradle build required for F-Droid.&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#usage&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Use the &lt;code&gt;al_gradle_lock&lt;/code&gt; Starlark macro from&#xA;&lt;code&gt;main/bzl/gradle_lock.bzl&lt;/code&gt; in your app&amp;rsquo;s &lt;code&gt;gradle/BUILD.bazel&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//tools/maven_install_gradle_converter:defs.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;al_gradle_lock&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;al_gradle_lock(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;update&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lock_file &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//projects/&amp;lt;app&amp;gt;:maven_lock.json&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tool &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//tools/maven_install_gradle_converter/cmd/gradle_lock_gen&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;bazel run :update_toml_write&lt;/code&gt; to regenerate the checked-in version&#xA;catalog. The corresponding &lt;code&gt;*_write_test&lt;/code&gt; target fails when it goes stale.&lt;/p&gt;&#xA;&lt;p&gt;Gradle owns &lt;code&gt;verification-metadata.xml&lt;/code&gt; because it must record the plugin&#xA;classpath in addition to the Bazel lock. Regenerate it with:&lt;/p&gt;</description>
			</item>
			<item>
				<title>MCP Cordis</title>
				<link>https://www-staging.alwaldend.com/docs/projects/mcp_cordis/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/projects/mcp_cordis/</guid>
				<description>&lt;p&gt;&lt;code&gt;mcp_cordis&lt;/code&gt; is a standalone stdio MCP server that mounts runtime JavaScript&#xA;packages through &lt;a href=&#34;https://github.com/deepseek-ai/deepseek-harness&#34;&gt;Cordis&lt;/a&gt;.&#xA;It is intentionally an MCP server, not a Codex plugin bundle.&lt;/p&gt;&#xA;&lt;p&gt;Reusable definitions are ordinary ESM files in&#xA;&lt;code&gt;projects/mcp_cordis/plugins&lt;/code&gt;, listed by &lt;code&gt;projects/mcp_cordis/cordis.yaml&lt;/code&gt;.&#xA;Disposable definitions use the same layout under&#xA;&lt;code&gt;out/&amp;lt;task&amp;gt;/mcp_cordis/runs/&amp;lt;run&amp;gt;/&lt;/code&gt;. Each run writes a bounded manifest with&#xA;explicit task, run, worker, information, budget, retention, lock, and cleanup&#xA;fields. &lt;code&gt;AGENT_TASK_ID&lt;/code&gt;, &lt;code&gt;AGENT_RUN_ID&lt;/code&gt;, and &lt;code&gt;AGENT_WORKER_ID&lt;/code&gt; may provide&#xA;stable identities; the launcher otherwise creates process-scoped identities.&#xA;Every&#xA;package is addressed by both scope and name, so a scratch package never&#xA;silently shadows a reusable package.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MCP Cordis</title>
				<link>https://www-staging.alwaldend.com/projects/mcp_cordis/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/projects/mcp_cordis/</guid>
				<description>&lt;p&gt;&lt;code&gt;mcp_cordis&lt;/code&gt; is a standalone stdio MCP server that mounts workspace-local&#xA;runtime packages behind one stable server interface, so packages can change&#xA;without changing how a client connects.&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#features&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;One stable stdio MCP server for workspace-local packages&lt;/li&gt;&#xA;&lt;li&gt;Reusable and disposable package definitions in the same layout&lt;/li&gt;&#xA;&lt;li&gt;Ordinary ESM files rather than a bespoke plugin format&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>OpenSpec</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_openspec/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_openspec/</guid>
				<description>&lt;p&gt;This package runs the upstream &lt;a href=&#34;https://openspec.dev/&#34;&gt;OpenSpec&lt;/a&gt; CLI with&#xA;Bazel&amp;rsquo;s pinned Node toolchain. &lt;code&gt;tools/package.json&lt;/code&gt; pins&#xA;&lt;code&gt;@fission-ai/openspec&lt;/code&gt; to 1.11.0; &lt;code&gt;tools/pnpm-lock.yaml&lt;/code&gt; records the package&#xA;integrities and transitive dependency versions. Package lifecycle scripts are&#xA;disabled. No global npm installation is needed.&lt;/p&gt;&#xA;&lt;p&gt;Each component owns an OpenSpec workspace at &lt;code&gt;&amp;lt;owner&amp;gt;/openspec/&lt;/code&gt;. The&#xA;repository&amp;rsquo;s evolution belongs to &lt;a href=&#34;https://www-staging.alwaldend.com/docs/infra/src/openspec/&#34;&gt;&lt;code&gt;infra/src/openspec/&lt;/code&gt;&lt;/a&gt;,&#xA;which is the default for the runnable target. Run commands from the enclosing&#xA;repository root; &lt;code&gt;OPENSPEC_PROJECT&lt;/code&gt; selects a different owner directory:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules binary toolchain</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_binary_toolchain/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_binary_toolchain/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_binary_toolchain&lt;/code&gt; creates Bazel toolchains and runnable targets for&#xA;packaged executable binaries. Archive entries can include runtime files,&#xA;which the generated binary targets expose through Bazel runfiles.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules Dnscontrol</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_dnscontrol/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_dnscontrol/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_dnscontrol&lt;/code&gt; packages a DNSControl JavaScript entrypoint together with&#xA;its record configuration files and emits a generated &lt;code&gt;requires.json&lt;/code&gt; manifest&#xA;of relative paths matching the Bazel runfiles tree. Record symlinks retain a&#xA;&lt;code&gt;.json&lt;/code&gt; suffix so DNSControl parses them as JSON. Load the manifest with&#xA;&lt;code&gt;require()&lt;/code&gt; and load each listed path with another &lt;code&gt;require()&lt;/code&gt; call;&#xA;DNSControl&amp;rsquo;s JavaScript loader does not implement CommonJS &lt;code&gt;module.exports&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules docs</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_docs/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_docs/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_docs&lt;/code&gt; packages Markdown documentation under a common archive prefix.&lt;/p&gt;&#xA;&lt;h2 id=&#34;documentation-rule&#34;&gt;Documentation rule&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#documentation-rule&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Add the module dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_docs&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then declare the package documentation. &lt;code&gt;srcs&lt;/code&gt; defaults to&#xA;&lt;code&gt;glob([&amp;quot;*.md&amp;quot;])&lt;/code&gt;; &lt;code&gt;visibility&lt;/code&gt; is optional.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_docs//docs:defs.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;docs_filegroup&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docs_filegroup(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;docs&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    deps &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;child&amp;#34;&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Relative dependency names without a colon are normalized to the child&#xA;package&amp;rsquo;s &lt;code&gt;docs&lt;/code&gt; target. &lt;code&gt;prefix&lt;/code&gt; defaults to the current package beneath&#xA;&lt;code&gt;content/docs/&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Files are packaged at their basename by default. When a package&amp;rsquo;s sources span&#xA;subdirectories that hold identically named files, set &lt;code&gt;preserve_paths = True&lt;/code&gt;&#xA;so each source keeps its package-relative path and the destinations stay&#xA;distinct.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules docs Gazelle</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_docs_gazelle/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_docs_gazelle/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_docs_gazelle&lt;/code&gt; adds a &lt;code&gt;docs_filegroup&lt;/code&gt; to existing Bazel packages that&#xA;contain a &lt;code&gt;README.md&lt;/code&gt;. The generated rule loads its macro from &lt;code&gt;rules_docs&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Add &lt;code&gt;rules_docs&lt;/code&gt; as a normal dependency and this generator as a development&#xA;dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_docs&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_docs_gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dev_dependency &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the public language target to the repository&amp;rsquo;s custom Gazelle binary:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@gazelle//:def.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gazelle_binary&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gazelle_binary(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gazelle_binary&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    languages &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_docs_gazelle//gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The extension only operates in directories where both a BUILD file and a&#xA;&lt;code&gt;README.md&lt;/code&gt; already exist. Newly generated rules use &lt;code&gt;glob([&amp;quot;*.md&amp;quot;])&lt;/code&gt; and are&#xA;visible only to their nearest ancestor Bazel package. Existing &lt;code&gt;srcs&lt;/code&gt;, &lt;code&gt;deps&lt;/code&gt;,&#xA;&lt;code&gt;visibility&lt;/code&gt;, and &lt;code&gt;prefix&lt;/code&gt; attributes are preserved.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules Hugo</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_hugo/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_hugo/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_hugo&lt;/code&gt; builds Hugo sites with a registered Hugo toolchain. It keeps the&#xA;site archive in the target configuration and the Hugo binary in the execution&#xA;configuration so site sources are not rebuilt for the execution platform.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;al_hugo_site&lt;/code&gt; wraps a site source archive and its PostCSS tooling.&#xA;&lt;code&gt;al_hugo_run_binary&lt;/code&gt; builds the site with the registered Hugo toolchain and&#xA;&lt;code&gt;al_hugo_binary&lt;/code&gt; exposes a runnable Hugo command for a site. The optional&#xA;&lt;code&gt;al_hugo_worker&lt;/code&gt; rule runs the build through a persistent worker.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules Promptfoo</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_promptfoo/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_promptfoo/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_promptfoo&lt;/code&gt; runs repository skills through a pinned Promptfoo CLI. It&#xA;keeps dependency resolution reproducible in Bazel while deliberately running&#xA;model calls only at test runtime.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setup&#34;&gt;Setup&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#setup&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Add the module and its skill-provider dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_promptfoo&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skills&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The development checkout uses sibling &lt;code&gt;local_path_override&lt;/code&gt; declarations.&#xA;Published releases must replace those local overrides with registry versions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;evaluate-a-skill&#34;&gt;Evaluate a skill&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#evaluate-a-skill&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_promptfoo//promptfoo:defs.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;promptfoo_test&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;promptfoo_test(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;answer_question_eval&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    config &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;promptfooconfig.yaml&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    skills &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//projects/agents/skills/answer-question:skill&amp;#34;&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    env_inherit &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;CODEX_HOME&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;CODEX_PATH_OVERRIDE&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    reuse_codex_login &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The runner physically copies each selected &lt;code&gt;SkillInfo.files_by_path&lt;/code&gt; bundle&#xA;to an isolated Bazel test-temporary&#xA;&lt;code&gt;workspace/.agents/skills/&amp;lt;name&amp;gt;/&lt;/code&gt; tree. Point the Codex SDK provider at the&#xA;exported workspace and, when using a compatible host Codex executable, at the&#xA;exported executable path:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules Promptfoo Gazelle</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_promptfoo_gazelle/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_promptfoo_gazelle/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_promptfoo_gazelle&lt;/code&gt; generates required, offline&#xA;&lt;code&gt;promptfoo_validate_test&lt;/code&gt; targets for Promptfoo configurations below an&#xA;&lt;code&gt;evals/&lt;/code&gt; directory. It never creates an &lt;code&gt;evals&lt;/code&gt; subpackage and never generates&#xA;live &lt;code&gt;promptfoo_test&lt;/code&gt; targets.&lt;/p&gt;&#xA;&lt;p&gt;Add &lt;code&gt;rules_promptfoo&lt;/code&gt; as a normal dependency and this generator as a&#xA;development dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_promptfoo&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_promptfoo_gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dev_dependency &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For one-pass skill package creation, also add &lt;code&gt;rules_skills&lt;/code&gt; as a normal&#xA;dependency and &lt;code&gt;rules_skill_gazelle&lt;/code&gt; as a development dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skills&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skill_gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dev_dependency &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add both public language targets to the repository&amp;rsquo;s custom Gazelle binary:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules skill</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_skills/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_skills/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_skills&lt;/code&gt; packages all files belonging to a Codex skill and validates its&#xA;instructions and optional OpenAI metadata with a hermetic Bazel aspect.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;Getting started&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#getting-started&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Add the module and register the validation aspect:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skills&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;build --aspects @rules_skills//skill:defs.bzl%skill_validation_aspect&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;build --output_groups=+skill_validation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Declare one library in the skill&amp;rsquo;s named, non-root package:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_skills//skill:defs.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;skill_library&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;skill_library(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    srcs &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; glob(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;**&amp;#34;&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        exclude &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BUILD.bazel&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BUILD&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;evals/**&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The package&amp;rsquo;s final path segment is the skill name, so a &lt;code&gt;skill_library&lt;/code&gt;&#xA;cannot be declared in a repository root package. Move a root-level skill into&#xA;a named subpackage before declaring it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules skill Gazelle</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_skill_gazelle/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_skill_gazelle/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_skill_gazelle&lt;/code&gt; adds a &lt;code&gt;skill_library(name = &amp;quot;skill&amp;quot;)&lt;/code&gt; to each named&#xA;subpackage that contains a &lt;code&gt;SKILL.md&lt;/code&gt;. The generated rule loads its macro from&#xA;the apparent &lt;code&gt;rules_skills&lt;/code&gt; repository, so Bzlmod repository mappings are&#xA;respected.&lt;/p&gt;&#xA;&lt;p&gt;Add &lt;code&gt;rules_skills&lt;/code&gt; as a normal dependency and this generator as a development&#xA;dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skills&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_skill_gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dev_dependency &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the public language target to the repository&amp;rsquo;s custom Gazelle binary:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-starlark&#34; data-lang=&#34;starlark&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;load(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@gazelle//:def.bzl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gazelle_binary&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gazelle_binary(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gazelle_binary&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    languages &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_skill_gazelle//gazelle&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The generated source bundle is:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rules template</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_template/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_template/</guid>
				<description>&lt;p&gt;&lt;code&gt;rules_template&lt;/code&gt; provides Bazel rules and a Go command for rendering template&#xA;files. A registered toolchain supplies the templating executable to build&#xA;actions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;Getting started&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#getting-started&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;MODULE.bazel&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel_dep(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rules_template&amp;#34;&lt;/span&gt;, version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;VERSION&amp;gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;register_toolchains(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@rules_template//main/bzl:all&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;BUILD.bazel&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>rules_iso</title>
				<link>https://www-staging.alwaldend.com/docs/tools/rules_iso/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www-staging.alwaldend.com/docs/tools/rules_iso/</guid>
				<description>&lt;p&gt;Module extension that downloads ISO images with &lt;code&gt;http_file&lt;/code&gt; and adds a&#xA;runnable &lt;code&gt;iso_flash&lt;/code&gt; target next to each image.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
