multi-struct-spec-style

multi-struct-spec-style is a cursor rule for Cursor from briangmilnes/APAS-VERUS. It costs 1,110 tokens per session, scanned A, original, MIT.

A design pattern for tree structures that uses separate structs for each node kind, combines them in an enum, and gives each type its own trait with specifications and executable methods.

In plain words
What is it for?
Use it when modeling trees with leaves, interior nodes, and a wrapper tree, including their recursive size, height, search, and update operations.
Why use it?
It gives complex tree variants a predictable layout and keeps recursive specifications in the appropriate trait implementation. This avoids scattered helper functions and inconsistent struct organization.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/briangmilnes/apas-verus/multi-struct-spec-style
Clone the repo
git clone --depth 1 https://github.com/briangmilnes/APAS-VERUS

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for multi-struct-spec-style

README.md
[![agentmods](https://agentmods.dev/badge/rules/briangmilnes/apas-verus/multi-struct-spec-style.svg)](https://agentmods.dev/rules/briangmilnes/apas-verus/multi-struct-spec-style)
Your own site
<a href="https://agentmods.dev/rules/briangmilnes/apas-verus/multi-struct-spec-style"><img src="https://agentmods.dev/badge/rules/briangmilnes/apas-verus/multi-struct-spec-style.svg" alt="Measured on agentmods" height="20"></a>
Per session 1,110 This file is loaded in full into every session.
When invoked 1,110 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01110 $0.01110
Opus 5 $0.00555 $0.00555
Sonnet 5 $0.00222 $0.00222
Haiku 4.5 $0.00111 $0.00111

Measured 4d ago against content hash 84c17fd1f197, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

multi-struct-spec-style scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/apas-verus/multi-struct-spec-style.mdc · 144 lines

How it starts

The opening of the file, as written. The whole thing — 144 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Multi-Struct Spec Style

Overview

For tree-like data structures with multiple node kinds (leaf, interior, root/tree wrapper), use separate structs composed into a discriminated enum. Each type gets its own trait with abstract specs and exec methods. Recursive spec fns go directly in the trait impl — no inherent impl blocks, no free spec fns, no stub delegation.

Structure

Types (bottom-up order)

pub struct Leaf { pub key: u64 }

pub struct Interior {
    pub key: u64,
    pub left: Option<Box<Node>>,
    pub right: Option<Box<Node>>,
}

pub enum Node {
    LeafNode(Leaf),
    InteriorNode(Interior),
}

pub struct Tree {
    pub child: Option<Box<Node>>,
}
  • Structs ordered bottom-up: Leaf, Interior, Node, Tree.
  • Tree is not in the enum — it wraps Option<Box<Node>>.
  • Enum variants ordered bottom-up matching struct order.

Traits (bottom-up order)

Each type gets its own trait with abstract spec fns and exec methods:

pub trait LeafTrait: Sized {
    spec fn spec_size(&self) -> nat;
    spec fn spec_height(&self) -> nat;
    spec fn spec_contains(&self, needle: u64) -> bool;

    fn new(key: u64) -> (t: Self)
        ensures t.spec_size() == 1, t.spec_height() == 1, t.spec_contains(key);

    fn set_key(&mut self, key: u64)
        ensures self.spec_contains(key);
}

pub trait InteriorTrait: Sized { ... }
pub trait NodeTrait: Sized { ... }
pub trait TreeTrait: Sized { ... }

Impls (bottom-up order)

Impl member order matches trait declaration order.

Leaf — non-recursive, specs are constants or field comparisons:

impl LeafTrait for Leaf {
    open spec fn spec_size(&self) -> nat { 1 }
    open spec fn spec_height(&self) -> nat { 1 }
    open spec fn spec_contains(&self, needle: u64) -> bool { needle == self.key }
    fn new(key: u64) -> (t: Self) { Leaf { key } }
    fn set_key(&mut self, key: u64) { self.key = key; }
}

Interior — references children via qualified trait calls:

impl InteriorTrait for Interior {
    open spec fn spec_size(&self) -> nat {
        let l = match self.left { None => 0nat, Some(n) => NodeTrait::spec_size(&*n) };
        let r = match self.right { None => 0nat, Some(n) => NodeTrait::spec_size(&*n) };
        1 + l + r
    }
    // ...
}

Read the full file on GitHub · 144 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 144 lines · 1,110 tokens per session scan A 84c17fd1f197

Subscribe to this mod's changes

multi-struct-spec-style is a cursor rule published in the GitHub repository briangmilnes/APAS-VERUS (10 stars, last pushed 1mo ago), licensed MIT. It adds 1,110 tokens to every session, about $0.0056 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.