ot-project-description-builder
Trigger for: OT project description, OTA scope, Research OT under 10 U.S.C. 4021, Prototype OT under 10 U.S.C. 4022, follow-on production scope under 10 U.S.C. 4022(f), milestone-based project scope, prototype objective, phase or go/no-go structure, BAA white-paper conversion, SO
Install
npx skills add https://github.com/1102tools-dev/federal-contracting-skills/tree/main/skills/ot-project-description-builder
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install 1102tools-dev-federal-contracting-skills@llmmart
git clone https://github.com/1102tools-dev/federal-contracting-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole 1102tools-dev/federal-contracting-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
OT Project Description Builder
Purpose and operating boundary
Create a milestone-based .docx project description for a Research OT under 10 U.S.C. 4021, Prototype OT under 10 U.S.C. 4022, or a follow-on production action under 10 U.S.C. 4022(f). Define the technical outcome, phase logic, deliverables, completion evidence, Government responsibilities, and agreement-specific controls without making the Agreements Officer's authority, participant-status, successful-completion, or follow-on-eligibility determination.
Produce two separate outputs:
- One project-description
.docxsuitable for the agreement file. It contains no cost estimate, should-cost, labor rate, milestone amount, funding profile, Government budget, or pricing conclusion. - One
MILESTONE HANDOFF TABLEin chat after document validation. It is an internal workpaper for OT Cost Analysis and never a document section, appendix, or companion file.
No external API is required.
Reference map
Load only what the active workflow needs:
- authority-and-scope-rules.md before stating authority, participant status, contribution treatment, prototype scope, or follow-on provisions.
- question-blocks.md when collecting or confirming inputs.
- document-specification.md in full before building the
.docx. - professional-product-standard.md before building the
.docx. - handoff-specification.md before presenting the chat-only milestone handoff.
- validation-gates.md before generation and again before delivery.
- runtime-adaptation.md when selecting input, document-generation, rendering, validation, or delivery capabilities.
Non-negotiable gates
- Correct authority: 10 U.S.C. 4021 covers basic, applied, and advanced research. 10 U.S.C. 4022 covers prototype projects. Section 4022(f) covers follow-on production contracts or transactions. Never label a prototype as a 4021 action.
- Authority is supplied, not selected: Explain the three paths when needed, but require the user or Agreements Officer to identify the authority. Do not default an uncertain request to Prototype OT.
- Correct prototype conditions: Under 4022(d)(1), Path A is significant participation by a nontraditional defense contractor or nonprofit research institution; Path B covers all significant non-Government participants being small businesses or nontraditional defense contractors; Path C requires at least one-third of total project cost from non-Federal sources; Path D is a senior procurement executive's written exceptional-circumstances determination. There is no Path D competition-commitment option.
- Status and contribution facts are not inferred: Do not decide nontraditional status, small-business status, significant participation, the applicable 4022(d) path, contribution ratio, contribution valuation, or fee. Record the user's approved facts and source. Research and follow-on production contribution arrangements are also supplied, not defaulted.
- TRL is optional: Use TRL only when supplied or genuinely useful. A prototype can address a proof of concept, model, process, agile development, novel commercial application, operational utility, or a combination. Do not force every project through a hardware-style TRL ladder.
- Milestones precede prose: Present the derived phase and milestone structure, including completion evidence and pending decisions, then end at the approval question. Do not generate the
.docxin the same response. - Artifact separation: Keep pricing, labor hours, contribution arithmetic, cost figures, funding, and skill-routing language out of the document. Keep the milestone handoff in chat only.
- Data rights are negotiated: Record the supplied posture by deliverable and distinguish background from agreement-generated material. Do not state that FAR or DFARS clauses control unless the agreement incorporates them.
- Follow-on language stays conditional: Record user-supplied predecessor, competitive-selection, and successful-completion facts without deciding eligibility. Do not promise award or say 4022(d) is a follow-on requirement.
- Every placeholder closes: Each
[TBD]must name an owner, trigger, and disposition method in Constraints and Assumptions. - Independent document validation: Run the bundled validator, render the document, inspect every page, fix defects, and repeat. Do not treat DOCX creation alone as proof of usability.
Pre-flight: capabilities and inputs
When this skill is entered immediately after a numbered Other Transaction Agent project-description selection and the current assistant response has not already shown the orchestrator's outcome preview, emit these exact four lines before authority intake or a capability check:
Begin line 1 with Recommended outcome:. Do not precede the block with a heading, acknowledgement, selection recap, routing narration, or code fence.
Recommended outcome: Validated OT Project Description `.docx` plus chat-only milestone handoff
Includes: authority record, objective, milestone structure, deliverables, completion evidence, schedule, and downstream cost handoff
Boundary/default: milestone payment type remains pending unless supplied; the user or Agreements Officer retains authority, participant, contribution, successful-completion, and follow-on decisions
Next: collect the concept or source material and missing authority facts
This is a routing fallback, not a second preview. Do not repeat it when the orchestrator already rendered the four lines in the current assistant response, and never replace it with Stage A intake.
After the orchestrator's outcome preview, begin authority and acquisition-frame intake and reuse every supplied fact. Do not make document-authoring or rendering availability the first question or action after workflow selection. A read-only or artifact-limited session may still inspect supplied material, identify contradictions and gaps, and complete useful scope intake.
Before promising or beginning the validated .docx build:
- Inspect attached source documents with the host's native document or PDF reader. Preserve explicit decisions and identify contradictions instead of silently resolving them.
- Require a
.docxauthoring path, Python 3.10 or later withpython-docxfor the bundled validator, and a rendering path such as LibreOffice when available. - Use an agency or consortium template when supplied. Otherwise use the formal document baseline in the document specification.
- Confirm that a source document's prices, rates, CLINs, budgets, and funding values will be excluded. Record only that excluded pricing data exists; the user can provide it separately to OT Cost Analysis with a confirmed amount basis.
- If document generation or rendering is unavailable, stop at the artifact boundary and report the missing capability. Preserve completed intake and explain what remains needed to resume.
Select a workflow
Workflow A: build from a concept
Use when the user supplies an objective, problem, requirement, or early concept but no approved milestone structure.
Workflow B: convert an existing document
Use for a white paper, proposal abstract, SOO, SOW, draft project description, or similar source. Extract settled technical facts; remove FAR clause, CLIN, QASP, staffing, and pricing content from the project-description artifact. Do not re-ask settled questions.
Workflow C: revise or reduce scope
Use when an existing project description or approved milestone structure must be changed. Preserve unaffected decisions, identify the technical and schedule effect of each proposed deletion or deferral, and obtain approval for the revised milestones before editing the document.
Stage A: authority and acquisition frame
Read authority-and-scope-rules.md and collect only missing items:
- User-confirmed authority: 4021 research, 4022 prototype, or 4022(f) follow-on production
- For a prototype, user-confirmed 4022(d)(1) Path A, B, C, or D and source
- Participant and significant-participation facts as confirmed by the Agreements Officer
- Approved contribution arrangement and source, or
PENDING - Direct or consortium structure and any controlling template
- Project purpose, present technical or operational baseline, and source documents
- For follow-on production, predecessor prototype and user-supplied selection and completion facts
Use the host's structured question tool when available. Otherwise use numbered questions and accept numbers, labels, or free text. If authority is uncertain, explain the differences neutrally and end at the authority question. Do not continue to scope derivation.
When required authority items are complete, show a short authority record and ask the user to confirm or correct it. End at that question.
Stage B: scope and milestone decisions
After Stage A approval, read question-blocks.md. Collect missing scope inputs in related batches:
- Outcome and measurable success conditions
- Existing baseline and major risks
- Phase logic, schedule, and external dependencies
- Test, demonstration, or acceptance environment
- Systems, interfaces, prototype units, data, and security boundaries
- Deliverables and objective completion evidence
- Data-rights posture by deliverable category
- Government-furnished property, information, facilities, and personnel
- Key roles, reviews, reporting, off-ramps, and transition intent
Use TRL only when supported. Otherwise describe maturity through observable baseline, target capability, and completion evidence.
Derive a candidate structure with:
Milestone ID | Phase | Objective | Estimated Duration | Deliverables | Completion Evidence | Timing or Sequence | Payment Type | TRL In/Out | Notes
Payment Type remains PENDING unless supplied. Do not infer Fixed, Cost-Type, or Mixed from milestone wording.
Decision Summary gate
Present:
- The confirmed authority record
- Explicit user decisions
- Derived assumptions and their rationale
- Pending items and their owner
- The full candidate milestone table
Ask the user to confirm, amend, or reject the structure. End immediately after that question. A request to skip questions does not waive this gate unless the user explicitly approves the displayed structure.
Build the project description
After approval:
- Read professional-product-standard.md, document-specification.md, and validation-gates.md in full. Preserve the formal OT controls while exercising editorial judgment about emphasis, sequence, and page economy.
- Apply the supplied template or the formal baseline. Use real Word heading styles, lists, tables, page-number fields, and a dynamic TOC when required.
- Preserve approved milestone IDs, phase relationships, deliverables, completion evidence, timing, payment-type status, and user overrides.
- Carry each phase-exit criterion into both the Technical Approach by Phase section and the corresponding Milestone Schedule row.
- Include a Contribution Arrangement section only when an approved arrangement affects the agreement. State ratios and cash or in-kind treatment without dollar amounts or funding calculations. Label pending facts.
- Include Production Follow-On Provisions only when the user requests them. State conditions and transition planning without making an eligibility finding or promising an award.
- Keep the performer responsible for the technical approach unless the Government has intentionally prescribed a method.
- Save only the project-description
.docxas the document artifact.
Validate and deliver
- Run
scripts/validate_docx.py <document> --json. - Render the
.docxto page images with the available document renderer. - Inspect every page for clipping, overlap, broken tables, blank pages, bad page breaks, unreadable density, missing glyphs, placeholder leakage, and inconsistent hierarchy.
- Correct every failure, rerun the validator, rerender, and inspect again.
- State whether LibreOffice or Microsoft Word performed the render. Do not claim Word compatibility from LibreOffice alone.
- Read handoff-specification.md and emit the approved milestone handoff in chat. Never save it as a file or add it to the
.docx. - Report unresolved
[TBD]items, the source and date of authority facts, and any validation layer that could not run. - If the document contains a dynamic TOC, tell the user:
Open the document in Word, press Ctrl+A (Cmd+A on Mac), then F9 (or Fn+F9) to update all fields and page numbers.Do not rely on a right-click-only instruction.
Out of scope
- OT should-costs, proposed-amount comparisons, funding profiles, and price-reasonableness determinations
- FAR-based SOW, PWS, IGCE, solicitation Section B, CLIN, or QASP artifacts
- Agreements Officer authority, participant-status, significant-participation, successful-completion, or follow-on-eligibility findings
- Legal opinions, agreement terms and conditions, and intellectual-property negotiation
- Unsupported TRL, cost-share, milestone payment type, fee, staffing, schedule, or performance threshold assumptions
MIT © James Jenrette / 1102tools. Source: github.com/1102tools-dev/federal-contracting-skills
Files (federal-contracting-skills)
-
agents
-
openai.yaml 266 B
interface: display_name: "OT Project Description Builder" short_description: "Build milestone-based OT project descriptions" default_prompt: "Use $ot-project-description-builder to develop an OT project description and a separate chat-only milestone handoff."
-
-
references
-
authority-and-scope-rules.md 4.6 KB
# OT Authority and Scope Rules Use the current statute, current DoD policy, and the agreement file as controlling sources. This reference prevents a technical project description from becoming an unsupported authority determination. ## Authority map ### 10 U.S.C. 4021 Research OT - Covers basic, applied, and advanced research projects. - Under subsection (e)(2), Government funds should, to the extent the Secretary determines practicable, not exceed the total provided by other parties. - Do not turn that direction into an automatic 50/50 rule or automatic 100-percent Government arrangement. Record the approved contribution arrangement and source. ### 10 U.S.C. 4022 Prototype OT The statute includes proof of concept, model, process or business process, reverse engineering for obsolescence, pilot or novel commercial application, agile development, creation or demonstration of operational utility, and combinations of those activities. TRL is useful for some projects but is not a statutory prerequisite. Require the user or Agreements Officer to identify one subsection (d)(1) condition: | Path | Condition | Project-description treatment | |---|---|---| | A | At least one nontraditional defense contractor or nonprofit research institution participates to a significant extent | Record the participant and user-supplied significance basis. Do not make the finding. | | B | All significant non-Government participants are small businesses or nontraditional defense contractors | Record the participant list and user-supplied statuses. Do not make the finding. | | C | At least one-third of total project cost is paid from non-Federal sources | Record the approved ratio, cash or in-kind form, valuation, and source without dollar amounts. | | D | The senior procurement executive determines in writing that exceptional circumstances justify the OT | Record the determination date or `PENDING`. Do not invent or characterize the determination. | There is no Path D competition-commitment condition. ### 10 U.S.C. 4022(f) Follow-On Production - A prototype transaction may provide for one or more follow-on production contracts or transactions. - A noncompetitive follow-on requires the statutory competitive-selection and successful-completion conditions. Record user-supplied facts, but do not decide either condition. - Do not require a production-ready TRL that the statute does not state. - Do not promise a follow-on award or state that prototype completion creates an entitlement. - Section 4022(d) does not apply to a follow-on under subsection (f). Use the negotiated contribution arrangement supplied for the production action. ## Participant status Under 10 U.S.C. 3014, a nontraditional defense contractor is an entity that is not currently performing and has not performed, for at least the year preceding the solicitation, a DoD contract or subcontract subject to full Cost Accounting Standards coverage. Do not substitute a contract-dollar threshold, consortium membership, commercial-item status, small-business status, or self-certification for the Agreements Officer's determination. A nonprofit research institution is separately recognized in 4022(d)(1)(A). ## Data rights OT data rights are negotiated in the agreement. For each deliverable category, record: - Background material and its owner - Agreement-generated material - Government use, disclosure, modification, and sublicensing rights - Delivery format and marking - License duration and purpose - Any specifically incorporated framework or clause FAR Part 27 or DFARS clauses may inform negotiations, but they are not controlling merely because the project supports DoD. Do not default to Government Purpose Rights, Unlimited Rights, or performer ownership. ## Project-description boundary The project description may state the approved authority and contribution arrangement as agreement facts. It must not: - Originate the authority, status, significant-participation, exceptional-circumstances, successful-completion, or follow-on determination - Include cost or funding arithmetic - State that a contribution path guarantees follow-on eligibility - Treat TRL as mandatory when another maturity model fits better - Claim that all FAR or DFARS provisions are categorically irrelevant; use only requirements incorporated by the agreement or controlling policy ## Primary sources - 10 U.S.C. 3014, Nontraditional defense contractor - 10 U.S.C. 4021, Research projects: transactions other than contracts and grants - 10 U.S.C. 4022, Authority of the Department of Defense to carry out certain prototype projects - DoD Other Transaction Guide, OUSD(A&S), July 2023, Version 2.0 - Guide to Research Other Transactions, OUSD(R&E), February 2026 -
document-specification.md 6.7 KB
# OT Project Description Specification Use a supplied agency or consortium template as the design and section authority. Without one, use US Letter portrait, 1-inch margins, a restrained formal-business style, page numbers, real Word styles, and a dynamic Table of Contents when the document has more than eight main sections. ## First-page decision brief Before front matter, use a compact decision brief with five labeled elements: prototype objective, decision supported, pivotal milestones, major assumptions, and program-team next action. Make this the page a busy Agreements Officer or program manager can use without reading the whole artifact. Use a route-specific title such as "Prototype Delivery Plan" or "Milestone Change Register," not a generic report name. The brief must not include pricing or make a reserved determination. The cover eyebrow or kicker, the cover title block, and the running header MUST all name the same product. A Project Description must never carry another route's label (for example "Prototype Delivery Plan") on its cover while its running header says "Project Description". Verify the three labels agree before delivery. ## Front matter - Project title - `Other Transaction Project Description` - Government organization and performer, or `To Be Determined` - Agreement number placeholder - Authority as user-confirmed - Version and date - Distribution or handling marking only when supplied Do not include the milestone handoff, price, cost, funding, staffing, or routing information. ## Section order Use this relative order. A supplied template may rename or renumber sections, but it must preserve their functions. ### 1. Agreement Overview - Purpose and project type - User-confirmed statutory authority - Parties and agreement structure - Authority, participant-status, contribution, or follow-on facts marked `PENDING` when unresolved ### 2. Technical Background and Current State - Problem or operational need - Existing capability and evidence - Prior work and present maturity - Why this project is needed, without making the legal vehicle-selection determination ### 3. Project Objectives For each objective state the capability, threshold, environment, verification method, and related completion evidence. Use TRL only when supported. ### 4. Technical Approach by Phase For each phase state objective, entry conditions, duration, intended outcomes, risks retired, dependencies, and phase-exit criterion. Preserve performer flexibility unless the Government intentionally prescribes a method. ### 5. Milestone Schedule Use one table: `Milestone ID | Phase | Description | Deliverables Due | Completion Criteria | Timing or Sequence | Payment Type` - Use the approved IDs and sequence. - `Payment Type` is Fixed, Cost-Type, Mixed, or `PENDING` only when supplied. - Completion criteria must identify objective evidence and acceptance responsibility. - Do not include payment amounts, estimated labor, rates, ceilings, funding, or contribution arithmetic. ### 6. Deliverables Use: `ID | Title | Format | Due Trigger | Acceptance Criteria | Rights Category` Due Trigger references a milestone or event, not an invented date. Include only deliverables mapped to project objectives, governance, or transition. ### 7. Data Rights Separate background from agreement-generated material and state the supplied license posture by deliverable category. State markings, delivery format, Government uses, and unresolved negotiations. Do not present FAR or DFARS clauses as controlling unless incorporated. ### 8. Period of Performance State total period, phase durations, sequencing, external dependencies, and the effect of go or no-go decisions. Use dates only when supplied. ### 9. Government Responsibilities State Government-furnished property, information, facilities, systems access, test resources, review roles, and availability dates. Use `None identified` only when confirmed. ### 10. Key Personnel State only roles, minimum qualifications, responsibilities, and substitution process. Do not include staffing counts, FTE, labor hours, SOC codes, or rates. ### 11. Reporting and Oversight State technical reviews, status and risk reporting, milestone-review process, issue escalation, records, and acceptance roles. ### 12. Contribution Arrangement, when applicable State the user-approved authority context, ratio, cash or in-kind treatment, valuation method, tracking, and source. Do not include dollar amounts, Government obligations, funding profiles, or calculations. Do not say the arrangement guarantees a follow-on. ### 13. Production Follow-On Provisions, when applicable State transition planning and the user-supplied predecessor, selection, and completion facts. Make all follow-on language conditional on the Agreements Officer's determination. Do not promise award, require an invented TRL, or state that 4022(d) applies to the follow-on. ### 14. Constraints and Assumptions Use: `ID | Assumption or Constraint | Basis | Owner | Closeout Trigger` Every `[TBD]` elsewhere in the document must have a matching row that names the owner and a concrete closeout action such as agreement modification, milestone review, or written Agreements Officer confirmation. ## Language and construction - Use `The performer shall demonstrate...`, `The prototype shall achieve...`, and `The Government will provide...` when those obligations are approved. - Use `Agreements Officer`, not `Contracting Officer`, unless a source template intentionally uses another title. - Avoid CLIN, QASP, AQL, option-year, task-order, and FAR-clause language. - Use real Heading 1, 2, and 3 styles, real lists, explicit table widths and cell margins, repeating table headers, and no fixed row heights. - Keep headings with following content and prevent rows from splitting when practical. - Use a page-number field and set Word to update fields on open. - A Contents section must contain a real, well-formed TOC field (each `fldChar` and `instrText` in its own run) or be omitted entirely. Never ship instructional or template residue such as "Table of Contents updates automatically in Word." as visible document text; if the cached field result cannot show real TOC entries, leave the field result empty for Word to populate on open. - Do not place prompts, tests, skill names, file paths, internal workpapers, or tool instructions in the document. - Use a restrained color accent, a short executive table, and a visual rhythm appropriate to the route. A revision foregrounds before/after effects; a project description foregrounds the execution path. Do not clone identical section sequences or cover treatment across route products. - Put source notes and validation detail in a concise Evidence and Assumptions appendix when needed; keep the body focused on executable scope and decisions. -
handoff-specification.md 2.1 KB
# Chat-Only Milestone Handoff Emit this handoff only after the user approved the milestone structure and the `.docx` passed available validation. It is an internal Government workpaper in the conversation, never a file, document section, appendix, or attachment. Use this heading and notice: ```text === MILESTONE HANDOFF TABLE: FOR OT COST ANALYSIS === Internal Government workpaper. Not part of the OT project description. Do not paste this table into the agreement file. ``` Use these columns: `Milestone ID | Phase | Objective | Est. Duration | Deliverables | Completion Evidence | Timing or Sequence | Payment Type | TRL In/Out | Notes` Rules: - Include every approved milestone and preserve its ID. - `Est. Duration` means calendar time from phase start or prior milestone completion, not labor effort. - Preserve user-supplied Payment Type. Use `PENDING` rather than guessing. - Use TRL only when approved; otherwise enter `N/A` and describe maturity evidence in Notes. - Put user overrides, derivation, dependencies, unresolved decisions, and completion-evidence ownership in Notes. - Do not include price, proposed amount, labor rate, fee, funding, should-cost, or price-reasonableness language. After the table provide: ```text Authority: <4021 research | 4022 prototype | 4022(f) follow-on production> Prototype Path: <A | B | C | D | N/A | PENDING> Contribution Arrangement: <approved ratio and cash/in-kind treatment | PENDING> Contribution Source: <document/date/user confirmation | PENDING> Project Start: <YYYY-MM | PENDING> Performance Locations: <approved locations | PENDING> Total Period of Performance: <calendar duration> ``` End with: `This approved scope handoff is ready for OT Cost Analysis. The cost skill should preserve these milestones and ask only for missing cost inputs.` ## Separation audit The final `.docx` must not contain: - The handoff heading or notice - `OT Cost Analysis`, skill invocation, or routing prose - Internal-workpaper language - Pricing, proposed amounts, should-costs, fees, labor rates, funding, or Government budget data The conversation may contain the handoff because it is explicitly outside the agreement artifact. -
professional-product-standard.md 5.5 KB
# Professional product standard This file is the canonical source for the copy packaged with each 1102tools skill. The packaged copies must remain identical to this file. ## Product judgment Produce a finished professional work product, not a record of the process used to create it. Write for the person who must understand, use, approve, or act on the result. Exercise editorial judgment. Include material that improves the reader's understanding or decision. Omit material merely because it was collected, available, or easy to generate. Every page, section, table, and visual must earn its place. Match the structure, length, voice, and visual treatment to the assignment. Do not reuse a universal report outline. A short decision card, formal contract-file document, analytical workbook, landscape, timeline, or longer consulting report may all be correct products for different requests. Lead with the useful output. Research mechanics, process narration, methodology, limitations, and compliance controls are secondary unless the reader's purpose makes one of them the product. ## Controlled freedom Route rules define the substantive outcome and genuine formal boundaries. They do not prescribe identical headings, page counts, layouts, or section order unless a law, supplied template, calculation model, or downstream interface requires it. Choose the clearest form for each idea: - prose for explanation and judgment; - tables for real comparison or repeated fields; - cards, profiles, matrices, timelines, charts, and callouts when they improve comprehension; - appendices only for material the intended reader may reasonably need. Do not put paragraph-length narrative in narrow table cells. Do not repeat the same information as a callout, table, and prose section unless each form serves a different reader need. Use a restrained, coherent design with clear hierarchy, readable typography, comfortable spacing, and accessible contrast. Treat examples as quality references, not templates to copy. ## Paid-value standard The primary artifact should contain the analysis, comparison, requirements, model, or operating guidance the customer is paying to receive. Audit material must remain subordinate. Before delivery, remove: - generic background the intended reader already knows; - duplicated findings or actions; - query logs, tool operations, sanitized parameters, and internal record mechanics; - generic owners, gates, scenarios, or warnings invented to fill a template; - boilerplate disclaimers repeated in multiple sections; - empty sections and tables that merely announce missing content. When evidence is insufficient for the promised product, say so plainly and provide the useful narrower result or acquisition plan for the missing evidence. Do not pad an evidence gap into a document that resembles a completed analysis. ## Reader-facing source citations Internal evidence identifiers such as `E001` may remain in a private research record for backward compatibility, but they never appear in a customer-facing artifact. Assign each distinct reader-visible source an identifier in order of first appearance: `S1`, `S2`, `S3`, with no leading zeros. Reuse the same identifier wherever that source supports another claim. Cite sources beside the supported claim using forms such as `[S1]`, `[S1, S4]`, or `[S1-S3]`. End a sourced report with a concise `Source Register`. Each entry uses the corresponding identifier and provides enough information to verify the source: publisher or organization, title or record identity, relevant date, and a clickable public URL or supplied-document locator. Deduplicate sources. Do not display internal source-class tokens or a query-by-query research log. Native legal and acquisition citations such as `FAR 10.001`, a docket number, PIID, UEI, or document section remain in their ordinary form. Add an `S` citation when the artifact also needs a link to the supporting source; do not replace the native citation with an opaque source number. For workbooks, source notes and benchmark rows may use `S` identifiers that resolve to a Sources or Raw Data register. Formula cells and internal validation IDs are not reader-facing source citations. ## Proportionate boundaries Accuracy, authority boundaries, unresolved decisions, and limitations remain mandatory when material. Present them once, in the least intrusive form that keeps the product honest. A concise note or callout is preferable to a recurring legalistic section when the reader needs the answer more than a compliance lecture. Do not weaken a formal SOW/PWS, OT project description, acquisition-policy status analysis, or auditable cost model for stylistic reasons. Formal and mathematical requirements remain hard constraints. Apply taste to hierarchy, selection, explanation, and delivery view, not to the removal of necessary substance. ## Final editorial review After technical validation and rendering, review the complete artifact as a demanding customer: - Is the useful result apparent immediately? - Did the author select and synthesize rather than dump everything collected? - Does each section materially advance the reader's work? - Are sources integrated credibly without dominating the product? - Are limitations accurate and proportionate? - Does the artifact feel composed for this assignment rather than populated from a universal template? - Is this work product an experienced professional could confidently sell? Revise until the answer to every applicable question is yes. Structural validation is a technical floor, not the release decision. -
question-blocks.md 3.7 KB
# Question Blocks Ask only for missing facts. Use the host's structured question tool when available; otherwise use numbered questions with an `Other` or free-text path. Batch related items, but do not cross a required approval gate in the same response. ## Compact reusable context record Capture these facts once and reuse them across the project description, handoff, revision, and cost analysis: agency mission; prototype objective; baseline; authority and path facts; participants; locations; data and security boundaries; transition intent; and the decision owner for each pending item. Do not ask a later route to restate this record unless a fact changes. ## Stage A: authority and acquisition frame 1. Which authority has the Agreements Officer identified: 10 U.S.C. 4021 research, 4022 prototype, or 4022(f) follow-on production? 2. For a prototype, which 4022(d)(1) path applies: A, B, C, or D? What is the source or determination status? 3. What participant-status and significant-participation facts has the Agreements Officer confirmed? 4. What contribution arrangement is approved, including ratio, cash or in-kind form, valuation, and source? Use `PENDING` when undecided. 5. Is the action direct or consortium-based? Is there a required template? 6. What source documents control the technical scope? For a follow-on production action also ask for the predecessor prototype, selection facts, completion facts, and user-confirmed transition intent. Do not make the statutory findings. ## Stage B1: outcome and baseline 1. What problem or operational need must the project address? 2. What exists today, and what evidence supports that baseline? 3. What observable capability must exist at completion? 4. Which quantitative thresholds, environments, interfaces, or user conditions define success? 5. What major technical, operational, schedule, or integration risks must be retired? If the user uses TRL, collect entry level, target level, supporting evidence, and the assessment owner. Otherwise use observable maturity statements. ## Stage B2: phases and milestones For each phase or work segment collect: - Objective and duration - Entry conditions - Required activity or outcome - Deliverables - Completion evidence and reviewer - Go or no-go decision and off-ramp - Dependencies and Government actions - Payment Type supplied by the user, or `PENDING` Each completion criterion must be specific, measurable, testable, and capable of an objective pass or fail decision. Avoid `satisfactory`, `as needed`, or `as determined by the Government` without a measurable test. ## Stage B3: agreement execution details Collect only applicable items: - Prototype units, software releases, datasets, models, interfaces, and test events - Places of performance and Government test or demonstration environments - Government-furnished property, information, systems access, and personnel - Security, privacy, export-control, and controlled-information boundaries supplied by the user - Data-rights posture by deliverable category - Key roles and substitution process - Review, reporting, risk, and issue cadence - Transition intent and follow-on provisions - Constraints, assumptions, unresolved thresholds, owners, and closeout triggers ## Scope-reduction choices Show the consequence of each proposed reduction without estimating savings unless OT Cost Analysis supplies them. Useful levers include: - Defer a phase or target capability - Reduce prototype units or environments - Narrow interfaces or user groups - Combine reviews without weakening completion evidence - Defer noncritical deliverables For each option show what capability, evidence, risk retirement, schedule, or transition readiness is lost. Obtain approval for the revised milestone table before editing the document. -
runtime-adaptation.md 1.7 KB
# Runtime Adaptation Describe operations by capability. Do not hardcode host-generated tool names, sandbox paths, or delivery functions. ## Questions - Use the host's structured multi-choice input when available. - Otherwise present numbered options in chat and accept a number, label, or free-text answer. - Keep Stage A authority confirmation and the Decision Summary as hard stops in every runtime. ## Source documents - Use the host's document or PDF reader for supplied files. - Extract explicit decisions, unresolved terms, milestone candidates, and pricing content that must be excluded. - Preserve source provenance and distinguish performer assertions from Government-approved facts. ## DOCX generation - Use the host's native document-authoring capability when available. - Otherwise use a local standards-compliant DOCX library. - Use an agency or consortium template when supplied. Do not silently replace it with a generic style. - Save to a writable task-specific location; never expose internal file-system paths in the artifact. ## Validation and rendering - Run the bundled validator with Python 3.10 or later and `python-docx`. - Render with Microsoft Word or LibreOffice when available and identify the engine used. - If LibreOffice is the only engine, do not claim Microsoft Word validation. - If rendering is unavailable, do not claim visual QA. Report the missing layer before delivery. ## Delivery - Present the `.docx` through the host's file-delivery capability. - For a dynamic TOC, state: `Open the document in Word, press Ctrl+A (Cmd+A on Mac), then F9 (or Fn+F9) to update all fields and page numbers.` - Emit the milestone handoff in chat only. - Never create a second handoff file merely because the runtime supports multiple artifacts. -
validation-gates.md 3.3 KB
# OT Project Description Validation Gates ## Before generation - The user confirmed 4021 research, 4022 prototype, or 4022(f) follow-on production. - A prototype has a user-confirmed 4022(d)(1) path or is visibly `PENDING`. - No participant status, significant participation, contribution ratio, fee, successful completion, or follow-on eligibility was inferred. - The user approved the milestone table and each derived assumption. - Payment Type is supplied or `PENDING`. - Each milestone has deliverables and objective completion evidence. - TRL is used only when supported. - Data-rights treatment is supplied by deliverable category or marked pending. ## Artifact structure - Required sections appear in the specified relative order. - Real heading styles and a dynamic TOC are used when required. - The cover eyebrow, title, and running header all name the same product. - No instructional or template residue (for example a note that the table of contents updates automatically) appears as visible text; a Contents section carries a real TOC field or is omitted. - The Milestone Schedule contains every approved milestone ID. - Every phase-exit criterion appears in the related milestone completion criteria. - The Deliverables table maps each artifact to a due trigger and acceptance criterion. - Each `[TBD]` has an owner and closeout trigger in Constraints and Assumptions. - Tables have explicit geometry, repeating headers, adequate padding, and no clipped rows. - Page one states the prototype objective, decision supported, pivotal milestones, major assumptions, and program-team next action without pricing or reserved determinations. - The body provides executable thresholds, completion evidence, go/no-go logic, and owned closeout triggers rather than repeating the first-page brief. ## Separation and legal accuracy - No milestone handoff, skill name, prompt, internal path, or routing message appears in the `.docx`. - No price, cost estimate, labor rate, fee, funding profile, Government budget, or price-reasonableness conclusion appears in the `.docx`. - Research is cited to 4021, prototypes to 4022, and follow-on production to 4022(f). - Path D is not described as a competition commitment. - The document does not make a status, significance, authority, completion, or follow-on determination. - Follow-on provisions do not promise award or import 4022(d) into the follow-on action. - FAR or DFARS clauses are not presented as controlling unless incorporated by the agreement. ## Deterministic and visual checks 1. Run `scripts/validate_docx.py <document> --json`. 2. Render the document with a real office engine. 3. Inspect every page at readable zoom. 4. Fix and rerun both checks after any defect. 5. Verify that the delivered file is the validated file. 6. Reject a cover-heavy first page, blank-looking contents page, clipped milestone table, or generic route title even when structural validation passes. ## Chat-only handoff - The table exactly identifies itself for OT Cost Analysis. - It contains all approved milestones, durations, deliverables, completion evidence, timing, payment type, and pending decisions. - Authority and contribution facts are presented as supplied inputs with provenance. - It contains no invented price, rate, fee, contribution arithmetic, or determination.
-
-
scripts
-
validate_docx.py 12.2 KB
#!/usr/bin/env python3 """Validate an OT project-description DOCX for structure and separation.""" from __future__ import annotations import argparse import json import re import sys import zipfile from pathlib import Path from docx import Document CORE_SECTIONS = [ "agreement overview", "technical background and current state", "project objectives", "technical approach by phase", "milestone schedule", "deliverables", "data rights", "period of performance", "government responsibilities", "key personnel", "reporting and oversight", "constraints and assumptions", ] FORBIDDEN = { "milestone handoff": re.compile(r"MILESTONE\s+HANDOFF\s+TABLE", re.I), "skill-routing language": re.compile( r"\bOT\s+Cost\s+Analysis\s+skill\b|\bbuild\s+the\s+OT\s+cost\s+analysis\b|\$ot-cost-analysis", re.I, ), "internal workpaper notice": re.compile(r"Internal\s+Government\s+workpaper", re.I), "currency amount": re.compile( r"(?:\$\s*\d|\b\d[\d,]*(?:\.\d+)?\s*(?:dollars?|USD|million|billion)\b)", re.I, ), "pricing or funding content": re.compile( r"\bshould[- ]cost\b|\bfunding\s+profile\b|\bGovernment\s+budget\b|" r"\bprice[- ]reasonableness\b|\blabor\s+rate\b|\bhourly\s+rate\b|\bmilestone\s+amount\b", re.I, ), "FAR artifact language": re.compile(r"\bCLINs?\b|\bQASP\b|\bAQL\b|\boption\s+year\b", re.I), "wrong prototype authority": re.compile( r"(?:Prototype\s+OT|prototype\s+(?:project|authority))[^.\n]{0,120}" r"(?:under|pursuant\s+to|authorized\s+by|authority:?\s*)\s*10\s*U\.?S\.?C\.?\s*4021", re.I, ), "obsolete prototype-definition citation": re.compile(r"10\s*U\.?S\.?C\.?\s*4003", re.I), "false Path D condition": re.compile( r"(?:4022\s*\(d\)\s*\(1\)\s*\(D\)|Path\s+D)[^.\n]{0,140}" r"(?:competition\s+commitment|commit(?:ment|ted)\s+to\s+compet)", re.I, ), "local runtime path": re.compile(r"/(?:mnt|tmp|Users)/|[A-Za-z]:\\", re.I), "instructional template residue": re.compile( r"table\s+of\s+contents\s+(?:updates?|will\s+update|refreshes?)\s+automatically" r"|updates?\s+automatically\s+in\s+word" r"|right-click[^.\n]{0,60}update\s+field" r"|press\s+F9", re.I, ), } PRODUCT_LABELS = ("project description", "delivery plan", "change register") def cover_product_labels(document: Document) -> set[str]: parts: list[str] = [] for paragraph in document.paragraphs: if heading_level(paragraph) is not None: break if paragraph.text.strip(): parts.append(paragraph.text) text = re.sub(r"\s+", " ", " ".join(parts)).lower() return {label for label in PRODUCT_LABELS if label in text} def header_product_labels(document: Document) -> set[str]: parts = [ paragraph.text for section in document.sections for paragraph in section.header.paragraphs ] text = re.sub(r"\s+", " ", " ".join(parts)).lower() return {label for label in PRODUCT_LABELS if label in text} def normalize_heading(text: str) -> str: text = re.sub(r"^\s*(?:section\s+)?\d+(?:\.\d+)*[.):-]?\s*", "", text, flags=re.I) return re.sub(r"\s+", " ", text).strip().lower() def heading_level(paragraph: object) -> int | None: style = getattr(paragraph, "style", None) name = getattr(style, "name", "") or "" match = re.fullmatch(r"Heading\s+([1-9])", name, re.I) return int(match.group(1)) if match else None def document_text(document: Document) -> str: parts = [paragraph.text for paragraph in document.paragraphs] for table in document.tables: for row in table.rows: for cell in row.cells: parts.append(cell.text) return "\n".join(parts) def has_toc_and_update(path: Path) -> tuple[bool, bool]: with zipfile.ZipFile(path) as archive: document_xml = archive.read("word/document.xml").decode("utf-8", errors="replace") settings_xml = archive.read("word/settings.xml").decode("utf-8", errors="replace") has_toc = bool(re.search(r"<w:instrText[^>]*>[^<]*\bTOC\b", document_xml, re.I)) update = bool(re.search(r"<w:updateFields\b[^>]*", settings_xml, re.I)) return has_toc, update def table_index(document: Document, required_headers: set[str]) -> tuple[int, dict[str, int]] | None: for table_number, table in enumerate(document.tables): if not table.rows: continue headers = { re.sub(r"\s+", " ", cell.text).strip().lower(): index for index, cell in enumerate(table.rows[0].cells) } if required_headers.issubset(headers): return table_number, headers return None def validate_milestones(document: Document, failures: list[str]) -> int: required = { "milestone id", "phase", "description", "deliverables due", "completion criteria", "timing or sequence", "payment type", } found = table_index(document, required) if found is None: failures.append("missing Milestone Schedule table with required headers") return 0 table_number, headers = found table = document.tables[table_number] if len(table.rows) < 2: failures.append("Milestone Schedule has no milestone rows") return 0 required_values = [ "milestone id", "phase", "description", "deliverables due", "completion criteria", "payment type", ] for row_number, row in enumerate(table.rows[1:], start=2): for header in required_values: value = row.cells[headers[header]].text.strip() if not value: failures.append(f"Milestone Schedule row {row_number} has blank {header}") return len(table.rows) - 1 def validate_deliverables(document: Document, failures: list[str]) -> int: required = {"id", "title", "format", "due trigger", "acceptance criteria", "rights category"} found = table_index(document, required) if found is None: failures.append("missing Deliverables table with required headers") return 0 table_number, headers = found table = document.tables[table_number] if len(table.rows) < 2: failures.append("Deliverables table has no deliverable rows") return 0 for row_number, row in enumerate(table.rows[1:], start=2): for header in ("id", "title", "due trigger", "acceptance criteria", "rights category"): if not row.cells[headers[header]].text.strip(): failures.append(f"Deliverables row {row_number} has blank {header}") return len(table.rows) - 1 def validate_tbd_closeout(document: Document, text: str, failures: list[str]) -> None: if "[TBD]" not in text: return required = {"assumption or constraint", "basis", "owner", "closeout trigger"} found = table_index(document, required) if found is None: failures.append("document contains [TBD] but has no Constraints closeout table") return table_number, headers = found table = document.tables[table_number] closeout_rows = 0 for row_number, row in enumerate(table.rows[1:], start=2): assumption = row.cells[headers["assumption or constraint"]].text if "[TBD]" not in assumption: continue closeout_rows += 1 if not row.cells[headers["owner"]].text.strip(): failures.append(f"Constraints row {row_number} has [TBD] but no owner") if not row.cells[headers["closeout trigger"]].text.strip(): failures.append(f"Constraints row {row_number} has [TBD] but no closeout trigger") if closeout_rows == 0: failures.append("document contains [TBD] without a matching Constraints closeout row") def validate(path: Path) -> dict[str, object]: failures: list[str] = [] try: if not zipfile.is_zipfile(path): return {"status": "fail", "failures": ["file is not a valid DOCX ZIP"]} with zipfile.ZipFile(path) as archive: names = set(archive.namelist()) for required in ("[Content_Types].xml", "word/document.xml", "word/styles.xml"): if required not in names: failures.append(f"missing DOCX part: {required}") document = Document(path) except (OSError, ValueError, zipfile.BadZipFile) as exc: return {"status": "fail", "failures": [f"cannot read DOCX: {exc}"]} text = document_text(document) for label, pattern in FORBIDDEN.items(): if pattern.search(text): failures.append(f"document contains forbidden {label}") cover_labels = cover_product_labels(document) header_labels = header_product_labels(document) if cover_labels and header_labels and not (cover_labels & header_labels): failures.append( "cover names " + ", ".join(sorted(cover_labels)) + " but the running header names " + ", ".join(sorted(header_labels)) + "; the cover eyebrow, title, and running header must name the same product" ) h1 = [ normalize_heading(paragraph.text) for paragraph in document.paragraphs if heading_level(paragraph) == 1 and paragraph.text.strip() ] positions: list[int] = [] for expected in CORE_SECTIONS: candidates = [index for index, value in enumerate(h1) if value == expected] if not candidates: failures.append(f"missing Heading 1 section: {expected}") else: positions.append(candidates[0]) if positions and positions != sorted(positions): failures.append("core Heading 1 sections are out of order") contribution_positions = [i for i, value in enumerate(h1) if value == "contribution arrangement"] follow_on_positions = [i for i, value in enumerate(h1) if value == "production follow-on provisions"] constraints_positions = [i for i, value in enumerate(h1) if value == "constraints and assumptions"] if constraints_positions: end = constraints_positions[0] if contribution_positions and contribution_positions[0] > end: failures.append("Contribution Arrangement appears after Constraints and Assumptions") if follow_on_positions and follow_on_positions[0] > end: failures.append("Production Follow-On Provisions appears after Constraints and Assumptions") if contribution_positions and follow_on_positions and contribution_positions[0] > follow_on_positions[0]: failures.append("Production Follow-On Provisions appears before Contribution Arrangement") milestone_count = validate_milestones(document, failures) deliverable_count = validate_deliverables(document, failures) validate_tbd_closeout(document, text, failures) if len(h1) > 8: try: has_toc, update = has_toc_and_update(path) except (KeyError, OSError, zipfile.BadZipFile) as exc: failures.append(f"cannot audit TOC settings: {exc}") else: if not has_toc: failures.append("document with more than eight sections has no dynamic TOC field") if not update: failures.append("document does not set updateFields-on-open") return { "status": "pass" if not failures else "fail", "heading_1_count": len(h1), "table_count": len(document.tables), "milestone_count": milestone_count, "deliverable_count": deliverable_count, "failures": failures, } def main() -> int: parser = argparse.ArgumentParser(description="Validate an OT project-description DOCX.") parser.add_argument("document", type=Path) parser.add_argument("--json", action="store_true") args = parser.parse_args() if not args.document.is_file(): print(f"ERROR: document not found: {args.document}", file=sys.stderr) return 2 result = validate(args.document) if args.json: print(json.dumps(result, indent=2, sort_keys=True)) elif result["status"] == "pass": print("OT project-description structure and separation passed.") else: print("VALIDATION FAILED") for failure in result["failures"]: print(f"- {failure}") return 0 if result["status"] == "pass" else 1 if __name__ == "__main__": raise SystemExit(main())
-
-
SKILL.md 14.3 KB
--- name: ot-project-description-builder description: > Trigger for: OT project description, OTA scope, Research OT under 10 U.S.C. 4021, Prototype OT under 10 U.S.C. 4022, follow-on production scope under 10 U.S.C. 4022(f), milestone-based project scope, prototype objective, phase or go/no-go structure, BAA white-paper conversion, SOO conversion, transition planning, or scope reduction before OT cost analysis. Produce a milestone-based .docx plus a separate chat-only handoff to OT Cost Analysis. Use TRL only when the project supports it. Never place cost estimates, funding profiles, contribution calculations, prices, or skill-routing content in the document. Do NOT use for a FAR SOW/PWS, OT cost analysis, IGCE, agreement terms and conditions, or an Agreements Officer's authority, participant-status, successful-completion, or follow-on determination. --- # OT Project Description Builder ## Purpose and operating boundary Create a milestone-based `.docx` project description for a Research OT under 10 U.S.C. 4021, Prototype OT under 10 U.S.C. 4022, or a follow-on production action under 10 U.S.C. 4022(f). Define the technical outcome, phase logic, deliverables, completion evidence, Government responsibilities, and agreement-specific controls without making the Agreements Officer's authority, participant-status, successful-completion, or follow-on-eligibility determination. Produce two separate outputs: 1. One project-description `.docx` suitable for the agreement file. It contains no cost estimate, should-cost, labor rate, milestone amount, funding profile, Government budget, or pricing conclusion. 2. One `MILESTONE HANDOFF TABLE` in chat after document validation. It is an internal workpaper for OT Cost Analysis and never a document section, appendix, or companion file. No external API is required. ## Reference map Load only what the active workflow needs: - [authority-and-scope-rules.md](references/authority-and-scope-rules.md) before stating authority, participant status, contribution treatment, prototype scope, or follow-on provisions. - [question-blocks.md](references/question-blocks.md) when collecting or confirming inputs. - [document-specification.md](references/document-specification.md) in full before building the `.docx`. - [professional-product-standard.md](references/professional-product-standard.md) before building the `.docx`. - [handoff-specification.md](references/handoff-specification.md) before presenting the chat-only milestone handoff. - [validation-gates.md](references/validation-gates.md) before generation and again before delivery. - [runtime-adaptation.md](references/runtime-adaptation.md) when selecting input, document-generation, rendering, validation, or delivery capabilities. ## Non-negotiable gates 1. **Correct authority:** 10 U.S.C. 4021 covers basic, applied, and advanced research. 10 U.S.C. 4022 covers prototype projects. Section 4022(f) covers follow-on production contracts or transactions. Never label a prototype as a 4021 action. 2. **Authority is supplied, not selected:** Explain the three paths when needed, but require the user or Agreements Officer to identify the authority. Do not default an uncertain request to Prototype OT. 3. **Correct prototype conditions:** Under 4022(d)(1), Path A is significant participation by a nontraditional defense contractor or nonprofit research institution; Path B covers all significant non-Government participants being small businesses or nontraditional defense contractors; Path C requires at least one-third of total project cost from non-Federal sources; Path D is a senior procurement executive's written exceptional-circumstances determination. There is no Path D competition-commitment option. 4. **Status and contribution facts are not inferred:** Do not decide nontraditional status, small-business status, significant participation, the applicable 4022(d) path, contribution ratio, contribution valuation, or fee. Record the user's approved facts and source. Research and follow-on production contribution arrangements are also supplied, not defaulted. 5. **TRL is optional:** Use TRL only when supplied or genuinely useful. A prototype can address a proof of concept, model, process, agile development, novel commercial application, operational utility, or a combination. Do not force every project through a hardware-style TRL ladder. 6. **Milestones precede prose:** Present the derived phase and milestone structure, including completion evidence and pending decisions, then end at the approval question. Do not generate the `.docx` in the same response. 7. **Artifact separation:** Keep pricing, labor hours, contribution arithmetic, cost figures, funding, and skill-routing language out of the document. Keep the milestone handoff in chat only. 8. **Data rights are negotiated:** Record the supplied posture by deliverable and distinguish background from agreement-generated material. Do not state that FAR or DFARS clauses control unless the agreement incorporates them. 9. **Follow-on language stays conditional:** Record user-supplied predecessor, competitive-selection, and successful-completion facts without deciding eligibility. Do not promise award or say 4022(d) is a follow-on requirement. 10. **Every placeholder closes:** Each `[TBD]` must name an owner, trigger, and disposition method in Constraints and Assumptions. 11. **Independent document validation:** Run the bundled validator, render the document, inspect every page, fix defects, and repeat. Do not treat DOCX creation alone as proof of usability. ## Pre-flight: capabilities and inputs When this skill is entered immediately after a numbered Other Transaction Agent project-description selection and the current assistant response has not already shown the orchestrator's outcome preview, emit these exact four lines before authority intake or a capability check: Begin line 1 with `Recommended outcome:`. Do not precede the block with a heading, acknowledgement, selection recap, routing narration, or code fence. ```text Recommended outcome: Validated OT Project Description `.docx` plus chat-only milestone handoff Includes: authority record, objective, milestone structure, deliverables, completion evidence, schedule, and downstream cost handoff Boundary/default: milestone payment type remains pending unless supplied; the user or Agreements Officer retains authority, participant, contribution, successful-completion, and follow-on decisions Next: collect the concept or source material and missing authority facts ``` This is a routing fallback, not a second preview. Do not repeat it when the orchestrator already rendered the four lines in the current assistant response, and never replace it with Stage A intake. After the orchestrator's outcome preview, begin authority and acquisition-frame intake and reuse every supplied fact. Do not make document-authoring or rendering availability the first question or action after workflow selection. A read-only or artifact-limited session may still inspect supplied material, identify contradictions and gaps, and complete useful scope intake. Before promising or beginning the validated `.docx` build: 1. Inspect attached source documents with the host's native document or PDF reader. Preserve explicit decisions and identify contradictions instead of silently resolving them. 2. Require a `.docx` authoring path, Python 3.10 or later with `python-docx` for the bundled validator, and a rendering path such as LibreOffice when available. 3. Use an agency or consortium template when supplied. Otherwise use the formal document baseline in the document specification. 4. Confirm that a source document's prices, rates, CLINs, budgets, and funding values will be excluded. Record only that excluded pricing data exists; the user can provide it separately to OT Cost Analysis with a confirmed amount basis. 5. If document generation or rendering is unavailable, stop at the artifact boundary and report the missing capability. Preserve completed intake and explain what remains needed to resume. ## Select a workflow ### Workflow A: build from a concept Use when the user supplies an objective, problem, requirement, or early concept but no approved milestone structure. ### Workflow B: convert an existing document Use for a white paper, proposal abstract, SOO, SOW, draft project description, or similar source. Extract settled technical facts; remove FAR clause, CLIN, QASP, staffing, and pricing content from the project-description artifact. Do not re-ask settled questions. ### Workflow C: revise or reduce scope Use when an existing project description or approved milestone structure must be changed. Preserve unaffected decisions, identify the technical and schedule effect of each proposed deletion or deferral, and obtain approval for the revised milestones before editing the document. ## Stage A: authority and acquisition frame Read [authority-and-scope-rules.md](references/authority-and-scope-rules.md) and collect only missing items: - User-confirmed authority: 4021 research, 4022 prototype, or 4022(f) follow-on production - For a prototype, user-confirmed 4022(d)(1) Path A, B, C, or D and source - Participant and significant-participation facts as confirmed by the Agreements Officer - Approved contribution arrangement and source, or `PENDING` - Direct or consortium structure and any controlling template - Project purpose, present technical or operational baseline, and source documents - For follow-on production, predecessor prototype and user-supplied selection and completion facts Use the host's structured question tool when available. Otherwise use numbered questions and accept numbers, labels, or free text. If authority is uncertain, explain the differences neutrally and end at the authority question. Do not continue to scope derivation. When required authority items are complete, show a short authority record and ask the user to confirm or correct it. End at that question. ## Stage B: scope and milestone decisions After Stage A approval, read [question-blocks.md](references/question-blocks.md). Collect missing scope inputs in related batches: - Outcome and measurable success conditions - Existing baseline and major risks - Phase logic, schedule, and external dependencies - Test, demonstration, or acceptance environment - Systems, interfaces, prototype units, data, and security boundaries - Deliverables and objective completion evidence - Data-rights posture by deliverable category - Government-furnished property, information, facilities, and personnel - Key roles, reviews, reporting, off-ramps, and transition intent Use TRL only when supported. Otherwise describe maturity through observable baseline, target capability, and completion evidence. Derive a candidate structure with: `Milestone ID | Phase | Objective | Estimated Duration | Deliverables | Completion Evidence | Timing or Sequence | Payment Type | TRL In/Out | Notes` Payment Type remains `PENDING` unless supplied. Do not infer Fixed, Cost-Type, or Mixed from milestone wording. ### Decision Summary gate Present: 1. The confirmed authority record 2. Explicit user decisions 3. Derived assumptions and their rationale 4. Pending items and their owner 5. The full candidate milestone table Ask the user to confirm, amend, or reject the structure. End immediately after that question. A request to skip questions does not waive this gate unless the user explicitly approves the displayed structure. ## Build the project description After approval: 1. Read [professional-product-standard.md](references/professional-product-standard.md), [document-specification.md](references/document-specification.md), and [validation-gates.md](references/validation-gates.md) in full. Preserve the formal OT controls while exercising editorial judgment about emphasis, sequence, and page economy. 2. Apply the supplied template or the formal baseline. Use real Word heading styles, lists, tables, page-number fields, and a dynamic TOC when required. 3. Preserve approved milestone IDs, phase relationships, deliverables, completion evidence, timing, payment-type status, and user overrides. 4. Carry each phase-exit criterion into both the Technical Approach by Phase section and the corresponding Milestone Schedule row. 5. Include a Contribution Arrangement section only when an approved arrangement affects the agreement. State ratios and cash or in-kind treatment without dollar amounts or funding calculations. Label pending facts. 6. Include Production Follow-On Provisions only when the user requests them. State conditions and transition planning without making an eligibility finding or promising an award. 7. Keep the performer responsible for the technical approach unless the Government has intentionally prescribed a method. 8. Save only the project-description `.docx` as the document artifact. ## Validate and deliver 1. Run `scripts/validate_docx.py <document> --json`. 2. Render the `.docx` to page images with the available document renderer. 3. Inspect every page for clipping, overlap, broken tables, blank pages, bad page breaks, unreadable density, missing glyphs, placeholder leakage, and inconsistent hierarchy. 4. Correct every failure, rerun the validator, rerender, and inspect again. 5. State whether LibreOffice or Microsoft Word performed the render. Do not claim Word compatibility from LibreOffice alone. 6. Read [handoff-specification.md](references/handoff-specification.md) and emit the approved milestone handoff in chat. Never save it as a file or add it to the `.docx`. 7. Report unresolved `[TBD]` items, the source and date of authority facts, and any validation layer that could not run. 8. If the document contains a dynamic TOC, tell the user: `Open the document in Word, press Ctrl+A (Cmd+A on Mac), then F9 (or Fn+F9) to update all fields and page numbers.` Do not rely on a right-click-only instruction. ## Out of scope - OT should-costs, proposed-amount comparisons, funding profiles, and price-reasonableness determinations - FAR-based SOW, PWS, IGCE, solicitation Section B, CLIN, or QASP artifacts - Agreements Officer authority, participant-status, significant-participation, successful-completion, or follow-on-eligibility findings - Legal opinions, agreement terms and conditions, and intellectual-property negotiation - Unsupported TRL, cost-share, milestone payment type, fee, staffing, schedule, or performance threshold assumptions --- *MIT © James Jenrette / 1102tools. Source: github.com/1102tools-dev/federal-contracting-skills* -
test.md 4.7 KB
# OT Project Description Builder Modernization Test Record Tested August 21, 2026 against the portable, progressive-disclosure version. The April record remains in `testing.md` with a supersession notice for obsolete authority and contribution statements. ## Automated validation - `quick_validate.py` passed the skill directory. - `scripts/validate_docx.py --help` and Python compilation passed. - A representative seven-page Resilient Autonomous Resupply Prototype project description passed DOCX ZIP, Heading 1 order, milestone-table, deliverables-table, placeholder-closeout, artifact-separation, dynamic-TOC, and update-fields-on-open checks. - The fixture used 14 ordered Heading 1 sections, four milestones, five deliverables, five fixed-geometry tables, a page-number field, and a dynamic TOC field. - Exact table geometry passed for every table: `tblW`, `tblInd`, `tblGrid`, and each cell width reconciled. - Six fault-injected copies were rejected for the expected reasons: chat-only handoff leakage, currency leakage, Prototype OT mis-citation to 10 U.S.C. 4021, false Path D competition-commitment language, a blank milestone completion criterion, and a `[TBD]` without an owner. ## Render and visual review - Rendered with LibreOffice through the Codex document renderer to seven page PNGs and a PDF. - Inspected every rendered page. The first pass exposed narrow columns and mid-word wrapping in the seven-column Milestone Schedule. - The fixture was rebuilt with exact weighted column geometry and deliberate header wrapping, then rerendered and re-inspected page by page. - The final render had no clipped text, overlapping content, broken glyphs, accidental blank pages, or orphaned sections. Long tables used repeating headers and non-splitting rows. - The TOC remained a valid dynamic field with a placeholder in LibreOffice. Microsoft Word was not retested, so LibreOffice rendering is not recorded as proof of Word behavior. ## Claude behavior tests Surface: Claude Code CLI 2.1.238, `claude-opus-5`, high effort, explicit `/ot-project-description-builder` invocation. 1. A request to choose between 10 U.S.C. 4021 and 4022 and select whichever 4022(d) path avoided contribution requirements was rejected. Claude explained the authority boundary, corrected the Path D premise, created no file, and stopped at the authority questions. 2. A user-approved Path C software workflow scenario with no TRL model produced the required Decision Summary, used observable maturity evidence instead of inventing TRLs, left every Payment Type pending, identified unresolved owners and closeout triggers, created no file, and stopped at the milestone-approval question. ## Codex behavior tests Surface: Codex CLI 0.149.0-alpha.4, GPT-5.6 Sol, extra-high reasoning, explicit `$ot-project-description-builder` invocation. 1. The authority self-selection prompt was stopped at the first authority question with no file or path selection. 2. The no-TRL software scenario produced the required Decision Summary, kept Payment Type and unresolved agreement facts pending, converted the supplied 95-percent threshold to auditable evidence, created no file, and stopped at the approval question. ## Confirmed gates - 10 U.S.C. 4021 is used for Research OTs, 4022 for Prototype OTs, and 4022(f) for follow-on production. - Path D is the senior procurement executive's written exceptional-circumstances determination, not a competition commitment. - Authority, participant status, significant participation, contribution treatment, successful completion, and follow-on eligibility remain user- or Agreements Officer-supplied facts. - TRL is optional and is not forced onto software, process, or business-workflow prototypes. - The project-description `.docx` and chat-only milestone handoff remain separate. - Cost, funding, pricing, labor, and skill-routing content stays outside the agreement artifact. - Data rights are recorded by deliverable and are not defaulted to a FAR or DFARS clause. - The milestone structure is approved before document generation. ## Open coverage - Research OT and primary follow-on-production project descriptions were not generated as DOCX fixtures in this pass. - Claude web, Claude Code after automatic compaction, Codex Desktop UI, and Microsoft Word were not rerun for this skill. - Implicit activation was not treated as deterministic; published usage should retain explicit invocation examples. ## August 22 delivery-instruction regression The delivery contract now gives one tested dynamic-field refresh sequence: open the document in Word, select all with `Ctrl+A` or `Cmd+A`, then press `F9` or `Fn+F9`. A right-click-only TOC instruction is not accepted. Client replay remains required at the agent-package release layer. -
testing.md 11.7 KB
# OT Project Description Builder: Testing Record > Historical record from April 2026. References below to a Path D "competition commitment," Prototype OT authority under 10 U.S.C. 4021, or automatic contribution treatment are preserved as test history but are legally superseded. See `test.md` for the August 2026 modernization results and current gates. ## The bottom line One testing wave in April 2026 across six end-to-end scenarios on Claude Opus 4.7 shipped 15 patches to the OT Project Description Builder. All 15 patches validated on regression across three post-patch runs that exercised untested territory (software prototype, consortium, path D competition commitment, research OT, traditional prime, and Workflow C scope reduction). No regressions, no new universal gaps. All three workflows (A full build, B document conversion, C scope reduction) are now covered. The skill reliably produces 10 USC 4021 and 4022 compliant project descriptions across prototype, research, and production-follow-on paths, with milestone-based payment structures, TRL-mapped phase progression, data rights handling, cost-sharing path selection, and a separate chat-only milestone handoff table for the OT Cost Analysis. ## Scenarios tested | # | Scenario | Authority | Performer path | Workflow | |---|---|---|---|---| | 1 | Ultra-lazy drone prototype | 10 USC 4021 | NDC | A (full build) | | 2 | Tethered surveillance drone, richly specified | 10 USC 4021 | NDC, 4022(d)(1)(A) | A | | 3 | FAR-flavored SOW conversion with CLIN/cost contamination | 10 USC 4021 | Traditional, 4022(d)(1)(C) | B (conversion) | | 4 | NSTXL-brokered BAA white paper, software prototype | 10 USC 4021 + 4022(f) | Traditional with competition commitment, 4022(d)(1)(D) | B | | 5 | Cold-weather battery chemistry research | 10 USC 4021 (research) | Traditional, no cost-share required | A | | 6 | Autonomous resupply prototype, $18M priced, $11M approved, descope to fit budget | 10 USC 4021 | Traditional, 4022(d)(1)(C) | C (scope reduction) | All six runs produced contract-file-ready .docx outputs, emitted the Milestone Handoff Table as chat output only, and stopped at the Phase 2 Invocation Gate for user "proceed" before document generation. ## What the skill got right on every run - Four-question Acquisition Context Intake up front (OT type, performer type, TRL entry/exit, consortium/direct) - Phase 2 Invocation Gate held. No self-approval observed on any run after the gate patch landed. - Milestone Handoff Table presented as chat-only markdown, never embedded in the .docx or saved as a separate file - Section 12 Cost-Sharing conditionally omitted for NDC, SB, competition-commitment paths, and for 10 USC 4021 research authority (where 4022(d) is statutorily inapplicable) - No FAR clause references leaked into the body. The one permitted exception (DFARS 252.227-7013/7014 cited as data rights taxonomy framework under OT tailoring) handled correctly. - No cost figures, CLINs, FTE counts, or SOC codes in any document body - Traditional SOW-to-OT conversion correctly stripped CLIN structure, FAR 52 clauses, QASP/AQL language, and dollar amounts while preserving scope intent ## Patches shipped in this wave Patches were applied in two sub-groups. Group 1 was cross-shipped from the SOW/PWS Builder Wave 2 patch set. Group 2 was derived from three live OT runs and validated against two subsequent runs covering untested territory. ### Group 1: Cross-shipped from SOW/PWS Wave 2 (5 patches) | Patch | Trigger | |---|---| | Phase 2 Invocation Gate with "DO NOT self-approve" language | Universal pattern in document-generating skills | | Anti-redundancy rule (do not re-ask questions the user's prompt already answers) | Universal pattern | | AskUserQuestion guidance for Phase 1 intake batching | Matches claude.ai web chat behavior | | UNCONDITIONAL RULE requiring Milestone Handoff Table emission | Mirrors SOW/PWS unconditional handoff pattern | | Section ordering prescriptive with explicit renumbering rule for omitted conditional sections | Prevents drift across runs | ### Group 2: OT-specific universal gaps surfaced in Tests 1-3 (10 patches) | Patch | Section affected | Trigger | |---|---|---| | Corrected NDC definition to CAS full-coverage test under 10 USC 3014, removed the incorrect "$500K+ in prior year" threshold | Intake Q2 | Test 2 flagged the factual error; verified against statute | | Conditional docx generator path (use `/mnt/skills/public/docx/SKILL.md` on claude.ai sandbox, fall back to python-docx on Claude Code and local installs) | Phase 2 opening | Test 2 flagged the sandbox-only path; all three tests had workarounds | | Split canned handoff closing message into two variants (cost-share and no-cost-share) | Phase 3 handoff | The single version incorrectly promised "apply cost sharing" on NDC, SB, and competition paths | | Required Document Review Checklist emission in chat (with per-item pass or attention status) before the Milestone Handoff Table | Phase 3 | All three initial runs ran the checklist mentally and moved on | | Go/no-go gate carry-through rule (phase-boundary milestones must carry Block 2 Q7 criteria into both Section 4 and Section 5) | Phase 1 milestone derivation | Test 1 flagged; criteria collected but not surfaced in the document | | Defined "Est. Duration" column semantics (calendar months from prior milestone) | Phase 3 handoff table | Ambiguous durations produce 3x+ cost-analysis labor loading deltas | | Cost data stripping rule for Workflow B (strip source dollar figures from body, pass to handoff as informational only) | Phase 0 Document Intake | Test 3 needed this; skill was silent | | Cost-share arithmetic disambiguation for Workflow B + 10 USC 4022(d)(1)(C) | Phase 0 Document Intake | Whether a stated total is government share or total agreement value is ambiguous in most SOWs and produces materially different government obligations | | Performance placeholder closeout mechanism for [TBD] thresholds in Section 3 Objectives, with default bilateral-modification disposition at Phase 1 CDR | Phase 2 Section 14 | Multiple runs invented disposition mechanisms; standardized here | | Body cross-references must use section titles rather than section numbers | Phase 2 Section Structure | Prevents broken refs when conditional sections are omitted and subsequent sections renumber | ### Regression validation (Tests 4, 5, and 6) Tests 4, 5, and 6 exercised untested territory after all 15 patches landed. They were designed specifically to stress parts of the skill that Tests 1-3 didn't touch. - **Test 4 (BAA conversion, consortium, path D, software, late TRL 5-7):** Every Group 2 patch that could fire did fire correctly. The conditional handoff message used the no-cost-share variant. The Document Review Checklist emitted as 11 items in chat. Cross-reference patch held (no numbered refs in body). Source-doc cost stripping wrote "None. White paper contained no cost figures" to the handoff, demonstrating the rule holds even when there is nothing to strip. - **Test 5 (Research OT, traditional prime, 30 months):** Skill correctly identified that 10 USC 4022(d) cost-sharing paths do not apply to 10 USC 4021 research authority and omitted Section 12. Cost-share arithmetic question did not fire because the statutory framework makes it inapplicable (the correct behavior, not a miss). Go/no-go criteria carried through as placeholder thresholds with stated disposition. - **Test 6 (Workflow C scope reduction, traditional prime, path C cost-share):** Skill correctly routed to Workflow C. The cost-share arithmetic disambiguation patch, originally written for Workflow B, generalized cleanly to Workflow C and fired as a blocking question with three specific arithmetic interpretations (total value, government share, or pre-share performer quote) and correct math for each. The source-doc cost stripping rule also generalized: original $18M baseline and $11M approved funding carried into the Milestone Handoff Table as "informational only, do not anchor should-cost estimate" rather than leaking into the regenerated document body. Document Review Checklist, Phase 2 Invocation Gate, conditional handoff message (cost-share variant), and [TBD] placeholder closeout all fired correctly. Model also showed useful domain judgment beyond skill rules (flagged NTC as TRL 7 operational and redirected to YPG for TRL 6 relevant environment, presented descope trade-offs as ranked packages A/B/C with risk levels). Those judgment moves were not patch-worthy. No regressions observed across any of the three regression tests. No new universal gaps surfaced. **Cross-workflow patch generalization.** Two Group 2 patches originally written for Workflow B (cost-figure stripping, cost-share arithmetic disambiguation) generalized to Workflow C without modification. This is the pattern we want: universal rules that apply wherever source cost data and path (C) math appear, not workflow-specific hedges. ## What was not tested - **Production follow-on OT as primary workflow.** Tests 2 and 4 included 10 USC 4022(f) provisions as an option, but neither run structured the agreement as a production follow-on. - **Consortium-specific templates.** Test 4 used NSTXL as the broker; DIU, AFWERX, NavalX, SOSSEC, and MTEC consortium variations have not been exercised. - **Small business performer path (10 USC 4022(d)(1)(B)).** Tests covered NDC (path A), traditional with competition commitment (path D), traditional with cost-share (path C), and research (no 4022(d) applicability). Small-business significant participation was not tested. - **Multi-performer consortia.** All tests used single performers or single primes with no subs. - **Deep classified prototype contexts.** No SAP, SAR, or ICD 705 variants were exercised. - **Hardware prototype beyond drone and ground vehicle.** Tests 1, 2, and 3 all touched airborne or ground-mobility prototypes. Directed energy, hypersonics, biotech, cyber tooling, and AI/ML prototypes beyond the Test 4 software case have not been exercised. Users in these contexts should expect to validate outputs more carefully and may encounter edge cases this wave did not surface. ## Testing methodology Six live runs on Claude Opus 4.7 via claude.ai web chat and Claude Code, the same environments the skill's end users run in. Evaluator grading was done by a separate Claude Opus 4.7 instance with access only to the skill text and the worker's final output transcript. Grading focused on three questions per run: 1. Did each patch under test fire correctly? 2. Did the output surface any new structural gap not covered by existing patches? 3. If a gap was observed, is it a universal pattern across the skill's full usage profile, or a one-off of model judgment on a specific input? Only gaps classified as universal structural patterns produced new patches. Drone-specific feedback (unit count defaults, airworthiness prompting), DoD-specific feedback (CMMC, ITAR), and over-engineering suggestions (sentinel markers, trigger-phrase hardening) were deliberately skipped to prevent bloat. Skill line count: 408 before the wave, 440 after all 15 patches (+32 lines net on a skill that runs hundreds to thousands of times). ## Patches: shipped in this wave Skill version lines: 408 before patches, 440 after. Ceiling remains 1,000. All 15 patches are live in the current SKILL.md. --- **Testing Methodology** Evaluator: James Jenrette (1102tools) and Claude Code Opus 4.7 (1M context window, max effort mode, Claude Max 20x subscription). Worker model tested: Claude Opus 4.7 on claude.ai web chat and Claude Code, the same environments the skill's end users run in. Wave: 6 runs, 15 patches shipped, 3 post-patch regression runs with zero new gaps surfaced. All three workflows (A, B, C) covered. Date: April 2026. Skill: ot-project-description-builder. Source: github.com/1102tools-dev/federal-contracting-skills. License: MIT.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.