@yottagraph-app/aether-instructions 1.1.23 → 1.1.25

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.
@@ -1,123 +1,71 @@
1
1
  # Update Branding
2
2
 
3
- Refresh the Lovelace Brand R2 files from the canonical source repository.
3
+ Sync the project's branding implementation with the latest Lovelace branding skill guidelines.
4
4
 
5
5
  ## Overview
6
6
 
7
- Aether's branding files are wholesale copies from the `moongoose/ui/news-ui` directory of the Lovelace repo. This command copies the latest versions and checks for new dependencies.
8
-
9
- **Do not hardcode any local paths.** Always ask the user for the Lovelace repo location.
7
+ The `lovelace-branding` skill (`skills/lovelace-branding/`) is the single source of truth for Lovelace brand identity. This command reviews the project's branding implementation files and updates them to align with the skill.
10
8
 
11
9
  ---
12
10
 
13
- ## Step 1: Ask for the Lovelace Repo Path
14
-
15
- ```
16
- AskQuestion({
17
- title: "Lovelace Repository Path",
18
- questions: [
19
- {
20
- id: "repo-path",
21
- prompt: "Where is your local clone of the Lovelace repository?",
22
- options: [
23
- { id: "home-lovelace", label: "~/lovelace" },
24
- { id: "custom", label: "Other location (I'll specify)" }
25
- ]
26
- }
27
- ]
28
- })
29
- ```
11
+ ## Step 1: Read the Branding Skill
30
12
 
31
- If the user selects "Other location", ask them to provide the full path.
32
-
33
- Expand `~` to the user's home directory. Store the result as `{repo}`.
13
+ Read the skill starting from `skills/lovelace-branding/SKILL.md`. It contains a file index that will direct you to the relevant reference files.
34
14
 
35
15
  ---
36
16
 
37
- ## Step 2: Validate the Source Path
38
-
39
- Confirm the branding source directory exists:
17
+ ## Step 2: Review Implementation Files
40
18
 
41
- ```bash
42
- ls {repo}/moongoose/ui/news-ui/BRANDING.md
43
- ```
19
+ Read each of the project's branding implementation files and compare against the skill guidelines:
44
20
 
45
- **If the file does not exist:** Tell the user the path doesn't contain the expected branding files and ask them to double-check. Stop.
21
+ | File | What to check |
22
+ | --------------------------------- | --------------------------------------------------------------------------------- |
23
+ | `assets/brand-globals.css` | `:root` CSS variables match the skill's color and typography values |
24
+ | `assets/fonts.css` | `@font-face` declarations match the skill's font setup |
25
+ | `assets/theme-styles.css` | Theme utility classes align with the skill's CSS patterns |
26
+ | `composables/useLovelaceTheme.ts` | `themeColors` object matches the skill's color palette |
27
+ | `composables/useThemeClasses.ts` | Theme-aware utilities consistent with skill patterns |
28
+ | `nuxt.config.ts` | Vuetify theme colors match the skill; CSS array includes all branding stylesheets |
46
29
 
47
- Also verify the other expected source files exist:
48
-
49
- ```bash
50
- ls {repo}/moongoose/ui/news-ui/composables/useNewsTheme.ts
51
- ls {repo}/moongoose/ui/news-ui/composables/useThemeClasses.ts
52
- ls {repo}/moongoose/ui/news-ui/assets/theme-styles.css
53
- ls {repo}/moongoose/ui/news-ui/assets/fonts.css
54
- ls {repo}/moongoose/ui/news-ui/public/fonts/README.md
55
- ls {repo}/moongoose/ui/news-ui/public/LL-logo-full-wht.svg
56
- ```
57
-
58
- Report any missing files. If critical files are missing (BRANDING.md, useNewsTheme.ts, theme-styles.css), stop. If optional files are missing (logo, fonts README), warn but continue.
30
+ For each file, note any discrepancies between the current implementation and the skill guidelines.
59
31
 
60
32
  ---
61
33
 
62
- ## Step 3: Copy the Branding Files
34
+ ## Step 3: Update Implementation
63
35
 
64
- The base source path is `{repo}/moongoose/ui/news-ui`.
36
+ For each discrepancy found in Step 2, update the project file to align with the skill:
65
37
 
66
- Copy these files to their Aether destinations:
38
+ - **CSS variables**: Update hex values, add missing variables, remove obsolete ones
39
+ - **Color palette**: Update `themeColors` in `useLovelaceTheme.ts` to match
40
+ - **Typography**: Update font families, weights, and fallbacks as specified by the skill
41
+ - **Patterns**: Update theme utility classes to match the skill's CSS patterns
42
+ - **Vuetify theme**: Update `lovelaceDark` theme colors in `nuxt.config.ts` if needed
67
43
 
68
- | Source (relative to base) | Destination (relative to Aether root) |
69
- | -------------------------------- | ------------------------------------- |
70
- | `BRANDING.md` | `branding/BRANDING.md` |
71
- | `composables/useNewsTheme.ts` | `composables/useNewsTheme.ts` |
72
- | `composables/useThemeClasses.ts` | `composables/useThemeClasses.ts` |
73
- | `assets/theme-styles.css` | `assets/theme-styles.css` |
74
- | `assets/fonts.css` | `assets/fonts.css` |
75
- | `public/fonts/README.md` | `public/fonts/README.md` |
76
- | `public/LL-logo-full-wht.svg` | `public/LL-logo-full-wht.svg` |
44
+ If the skill introduces new concepts not yet implemented in the project (new CSS variable namespaces, new utility classes, new patterns), add them.
77
45
 
78
- For `app.vue`, extract only the `<style>` block contents (not the `<style>` tags themselves) and write them to `assets/brand-globals.css`. Read the source `app.vue`, find the content between `<style>` and `</style>`, and overwrite `assets/brand-globals.css` with that content.
46
+ If the project has customizations that intentionally diverge from the skill (e.g., project-specific semantic colors), preserve them but note the divergence.
79
47
 
80
48
  ---
81
49
 
82
- ## Step 4: Dependency Audit
83
-
84
- After copying, read through each copied file and check for new references that weren't present before:
50
+ ## Step 4: Check Assets
85
51
 
86
- 1. **TypeScript imports**: Check `useNewsTheme.ts` and `useThemeClasses.ts` for any new `import` statements referencing files that don't exist in Aether.
52
+ Compare logo and asset files in `public/` against the skill's `assets/` directory (`skills/lovelace-branding/assets/`).
87
53
 
88
- 2. **CSS references**: Check `theme-styles.css`, `fonts.css`, and `brand-globals.css` for:
89
- - `url()` paths pointing to files not in `public/`
90
- - `@import` statements referencing files not in `assets/`
91
-
92
- 3. **Documentation references**: Check `BRANDING.md` for references to new files (logos, assets, CSS files) that should be copied.
93
-
94
- **If new dependencies are found:**
95
-
96
- - Static assets (images, SVGs, fonts) -> copy to `public/` in the equivalent subdirectory
97
- - CSS files -> copy to `assets/`
98
- - TypeScript/JS files -> copy to `composables/` or the equivalent directory
99
- - Report what was copied to the user
54
+ - Copy any new or updated SVGs/assets from the skill to `public/`
55
+ - If existing assets differ, update them to the skill's versions
100
56
 
101
57
  ---
102
58
 
103
- ## Step 5: Verify Integration
104
-
105
- Check that the adapter (`composables/useCustomTheme.ts`) is still compatible:
106
-
107
- 1. Read `composables/useNewsTheme.ts` and check what it exports.
108
- 2. Read `composables/useCustomTheme.ts` and confirm it re-exports the expected interface.
109
- 3. If `useNewsTheme.ts` has added new named exports that aren't re-exported by the adapter, tell the user:
110
-
111
- > `useNewsTheme.ts` has new exports that aren't exposed through `useCustomTheme.ts`: [list them]. You may want to add these to the adapter if components need them.
112
-
113
- 4. Check that `nuxt.config.ts` still includes the three CSS files:
59
+ ## Step 5: Verify
114
60
 
115
- ```typescript
116
- css: ['~/assets/fonts.css', '~/assets/brand-globals.css', '~/assets/theme-styles.css'],
117
- ```
61
+ 1. Confirm `nuxt.config.ts` CSS array still includes all branding stylesheets:
62
+ ```typescript
63
+ css: ['~/assets/fonts.css', '~/assets/brand-globals.css', '~/assets/theme-styles.css'];
64
+ ```
65
+ 2. Run `npm run build` to verify no compilation errors
118
66
 
119
67
  ---
120
68
 
121
69
  ## Step 6: Commit
122
70
 
123
- Follow the `git-support.mdc` workflow to commit the change.
71
+ Follow the `git-support.mdc` workflow to commit the changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yottagraph-app/aether-instructions",
3
- "version": "1.1.23",
3
+ "version": "1.1.25",
4
4
  "description": "Cursor rules, commands, and skills for Aether development",
5
5
  "files": [
6
6
  "rules",
@@ -3,41 +3,33 @@ description: Apply when working on visual styling, colors, typography, theming,
3
3
  alwaysApply: false
4
4
  ---
5
5
 
6
- # Lovelace Brand R2
6
+ # Lovelace Branding
7
7
 
8
- The app follows Lovelace Brand R2 guidelines. For the full specification (color ramps, accessibility, visual effects), read `branding/BRANDING.md`.
8
+ The `lovelace-branding` skill (`skills/lovelace-branding/`) is the single source of truth for all brand specifics -- colors, typography, patterns, assets, and usage guidelines. Read the skill before making branding decisions. Start with `SKILL.md` for the file index.
9
9
 
10
- ## Quick Reference
10
+ ## Theme
11
11
 
12
- - **Theme**: Single dark theme. No light mode, no theme switching.
13
- - **Core colors**: Jet Black `#0A0A0A`, Pure White `#FFFFFF`, Cyber Green `#3FEA00`, Sonic Silver `#757575`
14
- - **Secondary colors**: Electric Blue `#003BFF`, Blaze Orange `#FF5C00`
15
- - **Semantic**: Amber `#FF9F0A` (warnings), Red `#EF4444` (errors)
16
- - **Fonts**: FK Grotesk (body), FK Grotesk Mono (headlines, buttons, code). Falls back to Inter / system-ui. See `public/fonts/README.md` for setup.
17
- - **Icons**: Material Design Icons (mdi) via Vuetify
12
+ Single dark theme. No light mode, no theme switching.
18
13
 
19
- ## Branding Files
14
+ ## Implementation Files
20
15
 
21
- These files are copied wholesale from the canonical branding source (`moongoose/ui/news-ui`). Update them by running `/update_branding`. Do **not** edit them in place.
16
+ These files are project-owned. Consult the branding skill for the values and patterns they should implement.
22
17
 
23
- | File | Purpose |
24
- |---|---|
25
- | `branding/BRANDING.md` | Full brand specification |
26
- | `composables/useNewsTheme.ts` | Theme colors and CSS variable application |
27
- | `composables/useThemeClasses.ts` | Theme-aware class utilities |
28
- | `assets/theme-styles.css` | Theme CSS classes |
18
+ | File | Role |
19
+ |------|------|
20
+ | `assets/brand-globals.css` | `:root` CSS variables and global typography/layout |
29
21
  | `assets/fonts.css` | `@font-face` declarations |
30
- | `assets/brand-globals.css` | Global CSS variables, typography, utilities |
31
- | `public/fonts/README.md` | Font setup instructions |
32
- | `public/LL-logo-full-wht.svg` | Primary logo (white, for dark backgrounds) |
22
+ | `assets/theme-styles.css` | Theme-aware CSS utility classes |
23
+ | `composables/useLovelaceTheme.ts` | Theme color palette and Vuetify theme activation |
24
+ | `composables/useThemeClasses.ts` | Theme-aware class combination utilities |
33
25
 
34
- ## Vuetify Theme
26
+ ## Integration
35
27
 
36
- The `lovelaceDark` Vuetify theme is defined in `nuxt.config.ts` under `vuetify.vuetifyOptions.theme`. This is the same theme used by the Broadchurch Portal. It provides Brand R2 colors to all Vuetify components automatically (primary = Cyber Green, secondary = Electric Blue, etc.). Component defaults (rounded buttons, outlined cards, etc.) are also set in `nuxt.config.ts` under `vuetify.vuetifyOptions.defaults`.
28
+ - Use `useLovelaceTheme()` or `useThemeClasses()` in components for theme colors and class utilities.
29
+ - The `lovelaceDark` Vuetify theme is defined in `nuxt.config.ts` under `vuetify.vuetifyOptions.theme`. It provides brand colors to all Vuetify components automatically. Component defaults are set under `vuetify.vuetifyOptions.defaults`.
30
+ - CSS variables (`--lv-*`) and theme classes (`.theme-*`) are available globally via the stylesheets listed above.
31
+ - `useLovelaceTheme` calls `theme.change('lovelaceDark')` to activate the Vuetify theme. This must match the theme name in `nuxt.config.ts`.
37
32
 
38
- ## Integration
33
+ ## Updating
39
34
 
40
- - `composables/useCustomTheme.ts` is a thin adapter around `useNewsTheme`. Use `useCustomTheme()` or `useThemeClasses()` in components.
41
- - CSS variables (`--lv-green`, `--lv-black`, etc.) and theme classes (`.theme-card`, `.theme-text-primary`, etc.) are available globally.
42
- - `useNewsTheme` calls `theme.change('lovelaceDark')` to activate the Vuetify theme. This must match the theme name in `nuxt.config.ts`.
43
- - If you need to change how the branding integrates with Aether, modify the adapter -- not the branding files.
35
+ Run `/update_branding` to sync these files with the latest branding skill guidelines. The command reads the skill, compares each implementation file against the guidelines, and updates as needed.
package/rules/design.mdc CHANGED
@@ -20,7 +20,8 @@ When building from a project brief or user request, feel free to:
20
20
 
21
21
  - **Replace** `pages/index.vue` with the app's real home page
22
22
  - **Remove** any pages that don't fit the app
23
- - **Restructure** the navigation, layout, and branding entirely
23
+ - **Restructure** the navigation and layout entirely
24
+ - **Check** the branding is up to date with the `lovelace-branding` skill, and update as needed
24
25
  - **Keep** the infrastructure: `composables/`, `server/api/kv/`, `agents/`
25
26
 
26
27
  Do NOT treat the existing UI as something to preserve. Build what the
@@ -0,0 +1,184 @@
1
+ # Data Dictionary — BNY Arbitrage Rebate Analysis
2
+
3
+ ## Source Description
4
+
5
+ Interim Arbitrage Rebate Analysis reports prepared by BLX Group LLC for
6
+ municipal bond issuers. Each report computes the arbitrage rebate liability
7
+ under IRC Section 148 for a bond issue across a computation period. Reports
8
+ include transmittal letters, legal opinions, notes/assumptions, summary
9
+ schedules (rebate analysis, sources/uses of funds), and detailed per-fund
10
+ cash flow and investment data.
11
+
12
+ BNY (Bank of New York Mellon) serves as trustee. Orrick, Herrington &
13
+ Sutcliffe LLP provides the accompanying legal opinion.
14
+
15
+ ## Entity Types
16
+
17
+ ### bond
18
+
19
+ The municipal bond issue itself. One entity per unique bond across all reports.
20
+
21
+ | Property | Type | Description |
22
+ |----------|------|-------------|
23
+ | `client_matter_number` | string | **Strong ID.** BLX Group client matter number (e.g. `42182-2748`). Invariant across all reports for the same bond. |
24
+ | `bonds_name` | string | Full name of the bonds (e.g. "Multifamily Housing Revenue Refunding Bonds (Presidential Plaza at Newport Project-FHA Insured Mortgages) 1991 Series 1") |
25
+ | `par_amount` | string | Total par amount of the bond issue (e.g. "$142,235,000") |
26
+ | `dated_date` | string | Dated date of the bonds (e.g. "September 15, 1991") |
27
+ | `issue_date` | string | Issue date of the bonds (e.g. "October 17, 1991") |
28
+ | `bond_yield` | string | Arbitrage yield / allowable yield on investments (e.g. "7.420898%") |
29
+ | `computation_period` | string | The computation period for this report (e.g. "October 17, 1991 through October 16, 2024") |
30
+ | `rebate_computation_date` | string | End date of the computation period (e.g. "October 16, 2024") |
31
+ | `cumulative_rebate_liability` | string | Total cumulative rebate liability (e.g. "$0.00") |
32
+ | `rebate_payment_due` | string | Amount due to the US (e.g. "$0.00") |
33
+ | `return_on_investments` | string | Weighted return on investments since prior computation date (e.g. "6.447251%") |
34
+ | `shortfall_pct` | string | Shortfall percentage: return minus yield (e.g. "-0.973647%") |
35
+ | `actual_gross_earnings` | string | Total actual gross earnings across all funds |
36
+ | `allowable_gross_earnings` | string | Total allowable gross earnings at bond yield |
37
+ | `excess_earnings` | string | Total excess (negative = under yield) |
38
+ | `report_date` | string | Date the report was issued (e.g. "December 6, 2024") |
39
+
40
+ ### organization
41
+
42
+ Companies, agencies, law firms, and financial institutions named in the reports.
43
+
44
+ | Property | Type | Description |
45
+ |----------|------|-------------|
46
+ | `org_type` | string | Type: `government_agency`, `law_firm`, `financial_services`, `financial_institution`, `trust_company` |
47
+ | `description` | string | Role in the deal (e.g. "Issuer", "Trustee", "Bond Counsel") |
48
+
49
+ Expected entities:
50
+ - New Jersey Housing and Mortgage Finance Agency (Issuer)
51
+ - BLX Group LLC (Rebate Analyst)
52
+ - Orrick, Herrington & Sutcliffe LLP (Bond Counsel)
53
+ - BNY / Bank of New York Mellon (Trustee)
54
+ - Willdan Financial Services (Prior Report preparer)
55
+ - U.S. Department of the Treasury
56
+
57
+ ### fund_account
58
+
59
+ Bond proceeds sub-accounts tracked for rebate computation purposes.
60
+
61
+ | Property | Type | Description |
62
+ |----------|------|-------------|
63
+ | `fund_status` | string | Current status: `Active` or `Inactive` |
64
+ | `computation_date_valuation` | string | Fair market value at computation date |
65
+ | `gross_earnings` | string | Total gross earnings for the fund |
66
+ | `internal_rate_of_return` | string | IRR on the fund's investments |
67
+ | `excess_earnings` | string | Excess earnings (negative = below yield) |
68
+
69
+ Expected entities:
70
+ - Reserve I Account
71
+ - Reserve II Account
72
+ - Prior Rebate Liability
73
+ - Liquidity I Account
74
+ - Liquidity II Account
75
+
76
+ Additional fund accounts mentioned in Notes and Assumptions:
77
+ - Revenue Account (bona fide debt service fund, excluded from rebate)
78
+ - Escrow Fund
79
+ - Debt Service Reserve Account
80
+ - Construction Account
81
+
82
+ ### financial_instrument
83
+
84
+ Securities held within fund accounts (investments of bond proceeds).
85
+
86
+ | Property | Type | Description |
87
+ |----------|------|-------------|
88
+ | `par_amount` | string | Par amount of the security |
89
+ | `coupon` | string | Coupon rate (e.g. "7.000%" or "Variable") |
90
+ | `maturity_date` | string | Maturity date |
91
+ | `settlement_date` | string | Settlement date |
92
+ | `settlement_price` | string | Settlement price (e.g. "100.000") |
93
+ | `yield` | string | Yield on the security |
94
+ | `accreted_price` | string | Accreted price |
95
+ | `accrued_interest` | string | Accrued interest amount |
96
+ | `value` | string | Total value (par + accrued interest) |
97
+
98
+ Expected entities (scoped per fund via `entity_context_from_title`):
99
+ - Morgan IA (7% coupon, institutional investment)
100
+ - Federated MM (variable rate money market fund)
101
+
102
+ ### legal_agreement
103
+
104
+ Governing legal documents referenced in the reports.
105
+
106
+ | Property | Type | Description |
107
+ |----------|------|-------------|
108
+ | `agreement_type` | string | Type: `arbitrage_certificate`, `trust_indenture`, `engagement_letter` |
109
+ | `description` | string | Description of the agreement's role |
110
+
111
+ Expected entities:
112
+ - Certificate as to Arbitrage (Section 8, Section 21 referenced)
113
+ - Prior Report (Willdan Financial Services, December 17, 2008)
114
+
115
+ ### location
116
+
117
+ Addresses and jurisdictions.
118
+
119
+ Expected entities:
120
+ - Trenton, NJ (Issuer address)
121
+ - Dallas, TX (BLX Group address)
122
+ - New York, NY (Orrick address)
123
+ - State of New Jersey
124
+
125
+ ### person
126
+
127
+ Signatories, if extractable from signatures on transmittal letters and opinions.
128
+ May be sparse — many PDFs have illegible or absent signature blocks.
129
+
130
+ ## Relationships
131
+
132
+ | Relationship | Domain | Target | Description |
133
+ |-------------|--------|--------|-------------|
134
+ | `issuer_of` | organization | bond | Issuer issued the bonds |
135
+ | `trustee_of` | organization | bond | Trustee of the bond issue |
136
+ | `advisor_to` | organization | bond | BLX Group as rebate analyst; Orrick as bond counsel |
137
+ | `fund_of` | fund_account | bond | Fund account belongs to the bond issue |
138
+ | `holds_investment` | fund_account | financial_instrument | Fund holds a security as an investment |
139
+ | `party_to` | organization | legal_agreement | Entity is party to an agreement |
140
+ | `located_at` | organization | location | Organization's address |
141
+ | `predecessor_of` | legal_agreement | legal_agreement | Prior Report preceded current Report |
142
+
143
+ ## Events
144
+
145
+ | Event | Severity | Description |
146
+ |-------|----------|-------------|
147
+ | Rebate computation | medium | Periodic computation of arbitrage rebate liability |
148
+ | Bond issuance | high | Original issuance of the bonds (October 17, 1991) |
149
+ | Bond refunding | high | Refunding of prior 1985 Series F and G bonds |
150
+ | Fund valuation | medium | Valuation of fund accounts at computation date |
151
+ | Rebate payment determination | high | Determination that rebate payment is/isn't due |
152
+ | Report issuance | low | Issuance of this rebate analysis report |
153
+
154
+ ## Table Extraction
155
+
156
+ ### Schedule A — Summary of Rebate Analysis
157
+
158
+ Maps to `rebate_analysis` table config. Key column: Fund Description.
159
+ Each row becomes a `fund_account` entity with properties for status,
160
+ valuation, earnings, IRR, and excess earnings.
161
+
162
+ ### Schedule B — Sources & Uses of Funds
163
+
164
+ Maps to `sources_of_funds` and `uses_of_funds` table configs. Uses
165
+ `document_entity_from_title` mode to attach line items as properties
166
+ on the bond entity.
167
+
168
+ ### Security Holdings (Schedules C1, D1, F1, G1)
169
+
170
+ Maps to `security_tables` config. Key column: Security Type. Each
171
+ security becomes a `financial_instrument` entity scoped by fund
172
+ account title. Properties: par amount, coupon, maturity, yield, etc.
173
+
174
+ ### Cash Flow Tables (Schedules C2, D2, E1, F2, G2)
175
+
176
+ New table config needed. These are the largest tables — hundreds of rows
177
+ of deposit/withdrawal transactions for each fund account. Columns:
178
+ Date, Description, Cash Flow, Muni-Days/Computation Date, FV Factor
179
+ at bond yield, FV As Of at bond yield, FV Factor at IRR, FV As Of at IRR.
180
+
181
+ ## Citations
182
+
183
+ All extracted data should cite the specific schedule and page number
184
+ within the source PDF. The PDF filename serves as the document identifier.