gjames-quote-manifest

star 0

Use when creating, updating, validating, or explaining G.James V6 JSON quote manifests for QUOTE_MANIFEST_RUNNER_V2.bas from ATTRIBUTE_DETAILS.csv / ATTRIBUTE_SUMMARY.csv exports. Covers frame classification, stile selector cases, equal/unequal glass cases, Main_Glass quote option setup for QUOTE_IGU versus FIL resources, query_sets, and runner-compatible JSON schema. AI-model agnostic: use the bundled script and references regardless of assistant platform.

GJamesAustralia By GJamesAustralia schedule Updated 6/1/2026

name: gjames-quote-manifest description: Use when creating, updating, validating, or explaining G.James V6 JSON quote manifests for QUOTE_MANIFEST_RUNNER_V2.bas from ATTRIBUTE_DETAILS.csv / ATTRIBUTE_SUMMARY.csv exports. Covers frame classification, stile selector cases, equal/unequal glass cases, Main_Glass quote option setup for QUOTE_IGU versus FIL resources, query_sets, and runner-compatible JSON schema. AI-model agnostic: use the bundled script and references regardless of assistant platform.

G.James V6 Quote Manifest Builder

Use this skill to build JSON manifests consumed by QUOTE_MANIFEST_RUNNER_V2.bas.

Core Rule: only act on attributes that are in the export

Only set or vary attributes that actually exist in ATTRIBUTE_DETAILS.csv for the frames being built. Do not inject attributes from the skill's own defaults without confirming they are present.

  • Equal_Glass and Rail_Length_Slider (the unequal-glass case) and Main_Glass (the IGU/FIL baseline step) are glass/dimension-workflow defaults of this script, not universal. If the export does not expose them, do not add them silently.
    • The builder now guards the unequal-glass case: by default (--unequal-glass-case auto) it is emitted only for frames whose export actually contains the equal-glass attribute. Frames missing it are reported in frames_without_equal_glass_attr and get no glass case.
    • Main_Glass setup is still added unless you pass --no-glass-setup. For non-glass tasks, pass --no-glass-setup.
  • Never describe coverage as "all frames" / "every frame" without counting the distinct frame_codes that carry the attribute. Check the frame count, not just the set of distinct values — an attribute present on 1 of 10 frames is not universal.
  • When in doubt about whether a glass/default belongs, tell the user it is a skill default and confirm before including it.

Core Workflow

  1. Locate the current attribute export folder.
    • Prefer ATTRIBUTE_DETAILS.csv as the source of frame-level attributes and declared selections.
    • Use ATTRIBUTE_SUMMARY.csv only for cross-checking family counts or odd missing attributes.
  2. Read references/quote_manifest_runner_v2_contract.md before changing manifest structure.
  3. Run scripts/build_quote_manifest.py from the target project folder or pass absolute paths.
  4. Review the script output:
    • source frame count
    • manifest frame count
    • classification counts
    • case count
    • IGU/single-glazed glass setup counts
    • frames without stile selectors
  5. Validate the generated JSON by loading it with Python and checking representative frames.
  6. Do not edit QUOTE_MANIFEST_RUNNER_V2.bas unless the user explicitly asks to change runner behavior.

Default Classification Rules

  • Corner stile frames: frame codes ending _90, _090, or _270; use Corner_Stile.
  • Meeting stile frames: base frame code contains OXXO, O4XO, or OXXXXO; use Meeting_Stiles, falling back to OXXO_Adaptors for 246 residential/IGU where that is the exposed equivalent.
  • One-direction frames: all remaining frames; use Lock_Stile when present.
  • Frames without the expected stile selector are still included. They get baseline equal-glass capture and an unequal-glass rail-length capture, but no stile-value cases.

Glass Setup Rules

Glass setup is a workflow default, not a universal requirement — see the Core Rule above. Apply it only when the task is about glass/dimensions and the export supports it.

When glass setup applies, every generated frame should include a frame-level baseline_steps quote option for Main_Glass.

  • IGU / double-glazed frames use [QUOTE_IGU:GJAMES:IGU_00_F1].
  • Single-glazed frames use [FIL:GJAMES:CLL064-FACT].
  • The distinction matters: IGU resources are quote IGUs; non-IGU glass is generally a FIL resource.
  • The default script treats Sash_Type = G or Glazing_Type containing Double as IGU. Everything else falls back to single glazed unless overridden.

Save-Risk / Preflight Attributes

Before generating a manifest, check for attributes that can cause save/pricing failures if left at a prompt/default value. Do not assume these rules are universal; confirm with the user or project evidence.

Known example:

  • Subframe_Drainage_Required sometimes needs to be set to Y to avoid quote save issues.
  • Some series do not have this attribute.
  • Some 247 frames expose a formula-only subframe row whose formula/current value is already like "Yes, Subframe Drainage Required"; leave those unchanged.

Workflow:

  1. Inspect the export for prompt/default list attributes that may block save.
  2. Report candidate setup attributes and formula-only rows separately.
  3. Ask the user whether to force any candidate values before adding setup steps.
  4. Prefer a runner/macro path that refreshes BOM without requiring quote save if one is proven; until then, treat save-risk setup as project-specific.

Script

Use the bundled builder:

python .\scripts\build_quote_manifest.py `
  --attribute-export "C:\path\to\ATTRIBUTE_SELECTION_EXPORT_YYYYMMDD_HHMMSS" `
  --output "C:\path\to\quote-manifest.json" `
  --series-code "246_247_QUOTE_MANIFEST" `
  --output-prefix "246_247_QUOTE_MANIFEST_SIZE_TEST"

Important options:

  • --rail-length-slider 35.4: stored in manifest as the rail-900 unequal setup value.
  • --query-set bom_ext --query-set glass: default capture set for extrusion BOM and glass sizes.
  • --lock-attr, --meeting-attr, --corner-attr: add or replace selector attribute aliases when a product family exposes different names.
  • --meeting-pattern: add frame-code patterns that should use meeting-stile logic.
  • --no-glass-setup: do not add the Main_Glass baseline step. Use for non-glass tasks, or when the quote's existing main glass must not be touched.
  • --unequal-glass-case auto|always|never: controls the Equal_Glass=False / rail-length case. auto (default) emits it only for frames whose export contains the equal-glass attribute; always is the legacy force-on-every-frame behaviour; never suppresses it.
  • --equal-glass-attr / --rail-attr: rename the attributes the unequal-glass case toggles (defaults Equal_Glass / Rail_Length_Slider).
  • --vary-attr NAME: emit one frame_attribute case per declared real value (List, placeholder "Please Select" values skipped) or per True/False (Flag). Repeatable. Only frames that actually expose the attribute get cases.
  • --set-attr NAME=VALUE: force a value into baseline_steps as a frame_attribute setup (e.g. fix a placeholder list value such as Frame_Drainage_Type=A). Repeatable.
  • --force-subframe-required: project-specific opt-in; emits Subframe_Drainage_Required = Y / True baseline setup for settable list rows. Without this flag, the script only reports candidates.

When to Patch the Script

Prefer command-line options first. Patch the script only when the project introduces a new recurring rule that should be preserved for later runs, for example:

  • A new product family exposes a different equivalent of Meeting_Stiles.
  • IGU detection needs a family-specific override beyond Sash_Type / Glazing_Type.
  • The runner macro adds new supported query_sets or target types.

Keep project-specific constants out of the skill when they are only one-off values. Put them in the command invocation or a project-local wrapper instead.

Validation Checklist

  • The JSON root has series_code, output_prefix, requires_empty_quote, run_mode, batch_size, query_sets, and frames.
  • Every frame has frame_code, classification_code, classification, baseline_case_id, baseline_steps, and cases.
  • Every baseline_steps glass entry uses target: quote_option, attr_name: Main_Glass, and a full V6 resource ref.
  • Save-risk attributes such as settable subframe-required prompts are reported; only force them when the user has confirmed that setup for the current series.
  • Query keys are supported by QUOTE_MANIFEST_RUNNER_V2.bas: labour, item_costs, glass, bom_ext_cost, bom_ext.
  • Frames without stile selectors are not omitted.
  • Equal_Glass=False and Rail_Length_Slider=<value> appear together in the unequal setup case.
  • The manifest is valid JSON and can be loaded by Python before running it in V6.
Install via CLI
npx skills add https://github.com/GJamesAustralia/GJamesSkills --skill gjames-quote-manifest
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
GJamesAustralia
GJamesAustralia Explore all skills →