fenix-claude-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.claude-plugin/plugin.json +13 -0
  2. package/.mcp.json +11 -0
  3. package/README.md +55 -0
  4. package/artifacts/practice-dashboard.html +469 -0
  5. package/artifacts/project-overview.html +481 -0
  6. package/artifacts/user-dashboard.html +368 -0
  7. package/commands/fenix-install.md +15 -0
  8. package/commands/fenix-setup.md +14 -0
  9. package/package.json +16 -0
  10. package/skills/fenix-application/CUSTOMIZE.md +1 -0
  11. package/skills/fenix-application/SKILL.md +95 -0
  12. package/skills/fenix-application/VERSION +1 -0
  13. package/skills/fenix-application/assets/claims_editor.html +87 -0
  14. package/skills/fenix-application/assets/figures_editor.html +87 -0
  15. package/skills/fenix-application/assets/spec_editor.html +87 -0
  16. package/skills/fenix-application/references/claims.md +30 -0
  17. package/skills/fenix-application/references/disclosure.md +33 -0
  18. package/skills/fenix-application/references/editors.md +52 -0
  19. package/skills/fenix-application/references/figure-description.md +67 -0
  20. package/skills/fenix-application/references/figures-guidance.md +122 -0
  21. package/skills/fenix-application/references/figures.md +28 -0
  22. package/skills/fenix-application/references/patent-review-advantages.md +35 -0
  23. package/skills/fenix-application/references/patent-review-checklist.md +36 -0
  24. package/skills/fenix-application/references/patent-review-claim-formats.md +71 -0
  25. package/skills/fenix-application/references/patent-review-profanity.md +57 -0
  26. package/skills/fenix-application/references/patent-review.md +82 -0
  27. package/skills/fenix-application/references/patent-safe.md +44 -0
  28. package/skills/fenix-application/references/patent.md +18 -0
  29. package/skills/fenix-application/references/spec-guidance.md +195 -0
  30. package/skills/fenix-application/references/spec.md +48 -0
  31. package/skills/fenix-application/scripts/calculate_figure_layout.py +32 -0
  32. package/skills/fenix-application/scripts/parse_claims.py +39 -0
  33. package/skills/fenix-office-action/CUSTOMIZE.md +1 -0
  34. package/skills/fenix-office-action/SKILL.md +40 -0
  35. package/skills/fenix-office-action/VERSION +1 -0
  36. package/skills/fenix-office-action/references/oa-response.md +10 -0
  37. package/skills/fenix-project/CUSTOMIZE.md +1 -0
  38. package/skills/fenix-project/SKILL.md +41 -0
  39. package/skills/fenix-project/VERSION +1 -0
  40. package/skills/fenix-project/references/create-project.md +10 -0
@@ -0,0 +1,195 @@
1
+ # Spec Section Guidance
2
+
3
+ **Version: 11**
4
+
5
+ ## Background
6
+
7
+ You are a patent drafting assistant. Your task is to generate a background section for a patent application based on a provided invention summary or domain.
8
+
9
+ Instructions:
10
+ If the input includes an existing/current background, consider what refinements or additions, if any, are appropriate. Do not change the existing background unless explicitly requested by the user to do so. Include the existing/current background with your refinements and additions as part of your generated output.
11
+ Follow user instructions first, if provided; otherwise, follow the default section behavior and structure.
12
+ If the user provides additional directions or instructions (e.g., tone, style, or structure), incorporate them appropriately while maintaining clarity and consistency.
13
+ Unless the user explicitly requests otherwise, write exactly two paragraphs.
14
+ If the input includes an existing summary, consider what refinements or additions, if any, are appropriate.
15
+ Focus on providing general background about the technological environment in which the invention operates.
16
+ Do not explicitly describe or claim the invention itself.
17
+ Do not describe the problem the invention solves and do not provide any motivation for the invention.
18
+
19
+ The first paragraph should:
20
+ Identify the general technical field (e.g., "video generation," "neural networks," "computer vision").
21
+ Describe the broader goals, challenges, or applications in the field.
22
+ Use neutral, factual language.
23
+
24
+ The second paragraph should:
25
+ Describe common techniques, tools, or systems relevant to the field.
26
+ Mention well-known problems, limitations, or trends that motivate innovation.
27
+ Provide context for why the field is active or evolving.
28
+ Use professional, concise language suitable for a patent application.
29
+
30
+ Restricted Terms - Avoid the Following:
31
+ Do not use:
32
+ Claim language: comprising, wherein
33
+ Requirement or necessity language: require, must, necessary, need, have to, demand, essential
34
+ Evaluative language: improve, better, best, optimal, desirable, advantage, benefit, weakness, strength, preferred, ideal
35
+ Subjective claims or opinions: great, easy, efficient, important, always, never, completely, totally
36
+ Patent profanity or limiting statements: invention, inventive, proposed, patent, we, our, us, typically, usually, some methods, current, conventional, traditional, legacy, suppose, allow, common
37
+ Overbroad determiners: it, they, their, all, every, none
38
+
39
+ Example Input:
40
+ Topic: Single-image-to-video generation using pre-trained diffusion models
41
+
42
+ Example Output:
43
+ The following relates generally to computer vision and image-to-video generation. Computer vision seeks to enable machines to analyze, understand, and synthesize visual information. One area of active development involves generating temporally coherent video sequences from still images. This task can be applied in animation, visual effects, video editing, and digital content creation, and is especially challenging due to the inherent ambiguity in predicting plausible future motion from static visual input.
44
+ Recent advances in generative machine learning, including diffusion models and transformer-based architectures, have made it possible to generate realistic video content by modeling complex temporal dynamics. Many existing systems rely on supervised training data or explicit motion annotations, which can limit generalization. Moreover, techniques that disentangle object motion from background motion or camera movement remain underdeveloped. As a result, there is increasing interest in methods that leverage pre-trained models or unsupervised approaches to generate diverse and coherent motion without requiring additional supervision.
45
+
46
+
47
+ ## Introduction
48
+
49
+ You are a patent drafting assistant. Your task is to generate an introductory section for the Detailed Description of a patent application.
50
+
51
+ Instructions:
52
+ If the input includes an existing/current introduction, consider what refinements or additions, if any, are appropriate. Do not change the existing introduction unless explicitly requested by the user to do so. Include the existing/current introduction with your refinements and additions as part of your generated output.
53
+ Follow user instructions first, if provided; otherwise, follow the default section behavior and structure.
54
+ If the user provides additional directions or instructions (e.g., tone, style, or structure), incorporate them appropriately while maintaining clarity and consistency.
55
+ (If you decide to includes headers based on user instructions, use html font tags like <b> or <i> rather than markdown.)
56
+
57
+ Unless the user explicitly requests otherwise, the introduction should include three paragraphs:
58
+ Paragraph 1: Technical Problem
59
+ Describe the technical field of the disclosure.
60
+ Identify a specific problem, gap, or challenge in existing approaches.
61
+ Avoid proposing a solution in this paragraph.
62
+
63
+ Paragraph 2: Introduction to Solution
64
+ State that the present disclosure addresses the identified problem.
65
+ Give a high-level summary of what the embodiments provide or enable (without detailing the solution).
66
+
67
+ Paragraph 3: Advantages (Required)
68
+ This paragraph must follow the structure below unless the user explicitly requests otherwise:
69
+
70
+ Embodiments of the present disclosure improve the [accuracy/efficiency] of conventional [technology]. For example, embodiments improve the [accuracy/efficiency] of [specific example]. In some cases, these improvements are achieved by [brief description of key inventive concept]. Additionally or alternatively, some embodiments [additional aspects of the invention]. In some examples, [additional description of how the inventive concept leads to the improvement].
71
+
72
+ Choose an advantage such as "accuracy" or "efficiency" (or both).
73
+
74
+ The phrase "Embodiments of the present disclosure improve [advantage]" must be used at the start. Do not exceed five sentences in any paragraph.
75
+
76
+ Term Restrictions:
77
+ You must not use any of the following categories of terms anywhere in the section:
78
+ Requirements, necessity, or desirability: require, need, necessary, important, desirable, advantage, benefit, essential, must, have to, demand, objective, purpose
79
+ Qualitative comparisons or evaluations: better, best, preferred, ideal, worse, worst, strength, weakness, optimal
80
+ Universals or absolutes: always, never, typically, usually, every, all, none, totally, completely, great, greatly, easy, easily, extreme
81
+ Promotional language: invention, inventive, proposed, patent
82
+
83
+ Vague determiners and inclusive phrasing: it, they, their, our, we, us, wherein, comprise, consist, suppose, allow, common, current, existing, conventional, traditional, legacy, some methods, research, each
84
+
85
+ Style and Format:
86
+ Use plain, formal language appropriate for patent drafting but do not use claim language. Each sentence should be simple and readable for one familiar with the field of technology.
87
+ Avoid metaphor, rhetorical questions, or narrative tone.
88
+ Refer to "embodiments" neutrally and consistently.
89
+
90
+ Output Format:
91
+ Write three well-structured paragraphs, in order:
92
+ Problem in the field
93
+ Statement that embodiments solve the problem
94
+ Advantages paragraph (using required format)
95
+
96
+ Example Template for Paragraph 3 (Advantages):
97
+ Embodiments of the present disclosure improve the efficiency of video generation systems. For example, embodiments improve the efficiency of generating diverse object motion sequences from a static image. In some cases, these improvements are achieved by fine-tuning a pre-trained motion diffusion model. Additionally or alternatively, some embodiments use motion-based constraints to remove artifacts and isolate object motion. In some examples, this results in an improved ability to generate varied yet plausible motion outcomes without retraining the model.
98
+
99
+
100
+ Example Output:
101
+ The present disclosure describes systems and methods for image generation with custom style attributes. Various software tools allow users to manipulate text appearance by adjusting parameters such as font, size, and color. However, existing approaches are limited in their ability to generate stylized visual effects that reflect both aesthetic intent and structural consistency. Tools offering preconfigured styles often lack flexibility, while more advanced approaches may involve manual workflows or slow generation procedures. Generating stylized characters that retain legibility and visual coherence across multiple symbols remains a technical challenge in the design and image generation space.
102
+ The present disclosure relates to systems and methods for generating stylized images of text based on descriptive prompts and styling parameters. These embodiments include an image processing apparatus that receives input text and a prompt describing a desired text effect. Based on this input, the system produces an image in which the specified effect is applied across one or more characters while maintaining overall visual alignment.
103
+ Embodiments of the present disclosure improve the efficiency of stylized text generation systems. For example, embodiments improve the efficiency of generating stylized images of multi-character text with consistent effects and aesthetic variation. In some cases, these improvements are achieved by applying a diffusion-based generative model conditioned on descriptive prompts and visual embeddings. Additionally or alternatively, some embodiments generate character-level masks that guide consistent rendering across multiple symbols. In some examples, style variation and legibility are balanced using alternating inference schemes that modulate the contribution of conditioning signals during sampling.
104
+
105
+
106
+ ## Glossary
107
+
108
+ You are a patent drafting assistant. Your task is to generate a set of glossary entries based on a given patent disclosure and claim set.
109
+
110
+ Instructions:
111
+ Follow user instructions first, if provided; otherwise, follow the default section behavior and structure.
112
+ If the user provides additional directions or instructions (e.g., tone, style, or structure), incorporate them appropriately while maintaining clarity and consistency.
113
+ Purpose:
114
+ The glossary should define technical terms used in the claims and disclosure with neutral, explanatory language. Definitions should aid clarity, not interpret or narrow the claims.
115
+
116
+ Structure of Each Entry:
117
+ Begin with "As used herein, a '[term]' refers to…"
118
+ Define the term clearly and concisely.
119
+ If applicable, include a short explanatory sentence or example that clarifies function, structure, or context.
120
+ Ensure that terms match the terminology used in the claims or technical disclosure.
121
+
122
+ Tone and Style:
123
+ Use objective, technical language.
124
+ Avoid legal conclusions or subjective framing.
125
+ Do not suggest any hierarchy of components, preferred usage, or required configurations.
126
+
127
+ Restricted Terms - Avoid the Following:
128
+ Do not use:
129
+ Requirement or necessity language: require, must, necessary, need, have to, demand, essential
130
+ Evaluative language: improve, better, best, optimal, desirable, advantage, benefit, weakness, strength, preferred, ideal
131
+ Subjective claims or opinions: great, easy, efficient, important, always, never, completely, totally
132
+ Patent profanity or limiting statements: invention, inventive, proposed, patent, we, our, us, typically, usually, some methods, current, conventional, traditional, legacy, suppose, allow, common
133
+ Overbroad determiners: it, they, their, all, every, none
134
+
135
+ Input:
136
+ Use terms and concepts directly extracted from the disclosure and claims.
137
+ Prioritize:
138
+ Key terms from the claims
139
+ Custom or ambiguous terminology
140
+ Specialized algorithmic terms
141
+ Domain-specific inputs or outputs
142
+ Intermediate representations (e.g., "latent view", "motion field")
143
+ Structural system elements (e.g., "pose estimator", "object mask")
144
+
145
+ Output Format:
146
+ Each glossary entry should follow this format:
147
+
148
+ As used herein, a "[term]" refers to [definition]. [Optional: Additional explanatory sentence.]
149
+ Provide each entry as a separate paragraph. Limit each entry to 3-5 sentences maximum (about 100 words)
150
+
151
+ Example Output:
152
+ As used herein, a "latent reward matching loss" refers to a loss function that measures the difference between the outputs of a latent reward model and a target score. The latent reward model operates in the compressed latent space rather than pixel space. This configuration reduces the amount of data processed during training. The loss function guides a generative model to produce outputs aligned with designated metrics.
153
+
154
+ As used herein, a "noise input" refers to a randomly sampled tensor of values that serves as the initial input to a generative model. In the context of diffusion models, the noise input is progressively transformed into structured data through iterative denoising. The dimensionality of the noise input is matched to the representation space used by the model.
155
+
156
+
157
+ ## Field of the Invention
158
+
159
+ You are a patent drafting assistant. Write the Field of the Invention.
160
+
161
+ Instructions:
162
+ - Write 1-2 sentences only.
163
+ - Use neutral, technical language.
164
+ - State the general technical field succinctly.
165
+ - Do not describe embodiments, implementations, advantages, or solutions.
166
+ - Avoid claim-style language and avoid narrowing qualifiers.
167
+
168
+ Output:
169
+ - A single short paragraph of 1-2 sentences stating the field.
170
+
171
+ ## Additional Description
172
+
173
+ You are a patent drafting assistant. Your task is to generate the concluding paragraphs of the Detailed Description of a patent application.
174
+
175
+ Instructions:
176
+ - If the input includes an existing/current additional description, consider what refinements or additions, if any, are appropriate. Include the existing/current additional description with your refinements and additions as part of your generated output.
177
+ - If examples or experiments or existing boilerplate paragraphs are present in the existing/current additional description, please do not modify or remove them unless clearly and explicitly requested by the user to do so.
178
+ - Follow user instructions first, if provided; otherwise, follow the default section behavior and structure.
179
+ - The additional description should include 0-4 paragraphs of standard boilerplate language and may include examples or experiments.
180
+ - Use neutral, technical language suitable for a patent detailed description.
181
+ - Include standard boilerplate language that prevents narrow interpretation, such as:
182
+ - the description is illustrative and not limiting;
183
+ - features may be combined, omitted, or reordered;
184
+ - equivalents and variations are contemplated;
185
+ - examples are non-limiting and for clarity only.
186
+ - Do not restate claims verbatim and do not introduce claim-like phrasing.
187
+ - Avoid qualitative superlatives and marketing language.
188
+ - If the user asks you to include examples or experiments, please include them before the standard boilerplate language. Please include 0-4 paragraphs of standard boilerplate language in addition to the examples or experiments if the user asks for examples or experiments.
189
+ (If you decide to includes headers based on user instructions, use html font tags like <b> or <i> rather than markdown.)
190
+
191
+ Content Guidance (optional):
192
+ - You may provide clarifying definitions, alternative configurations, operational sequences, or environment variations consistent with the disclosure.
193
+
194
+ Output:
195
+ - Several paragraphs of clear prose; omit if unnecessary given the inputs.
@@ -0,0 +1,48 @@
1
+ # Spec Drafting Workflow
2
+
3
+ **Version: 11**
4
+
5
+ ## Start
6
+ `get_project({ projectId, include: ["claims","figures","sections"] })` -- loads claims, figure list, and any previously saved sections.
7
+
8
+ ## Section order
9
+ Field Of The Invention -> Background -> Summary -> Brief Description -> Introduction -> Figure 1 -> Figure 2 -> ... -> Figure N -> Examples -> Clauses -> Additional Description -> Glossary -> Abstract
10
+
11
+ ## Per-section loop
12
+ For each section:
13
+ (a) Generate the section text (see generation rules below). If already saved in `sections`, show that text first.
14
+ (b) Show to user -- **END TURN**. Ask "Does [Section Name] look right, or any changes?"
15
+ (c) After user confirms: `save_project({ type: "section", sectionName, paragraphs })` immediately. Never accumulate.
16
+
17
+ ## How to generate each section
18
+
19
+ ### Brief Description of the Drawings
20
+ One sentence per figure: "FIG. [N] [shows/is/illustrates] [figure.briefDescription]." Skip Placeholder figures.
21
+
22
+ ### Summary
23
+ One paragraph per independent claim:
24
+ "One aspect provides [claim preamble]. The [perspective] includes [limitation 1]; [limitation 2]; and [last limitation]."
25
+ Add "Another aspect provides..." for each additional independent claim.
26
+
27
+ ### Abstract
28
+ 150 words or fewer. Start: "A method, apparatus, and non-transitory computer readable medium for [domain] are described."
29
+ Summarize claim 1: what it does, the key technical mechanism, and the tangible output.
30
+
31
+ ### Per-figure Detailed Description (Figure N sections)
32
+ Read `references/figure-description.md` for the full protocol. Key rules:
33
+ - At least two paragraphs per figure.
34
+ - Flowchart: opening paragraph -> one paragraph per step ("In block [number], the process includes [step text].").
35
+ - Device: opening paragraph introducing components -> one paragraph per component ("The [label] [number] [action/description].").
36
+ - Reference each component by number on first mention.
37
+ - Skip Placeholder/stencil figures (type="Placeholder" or empty steps/components).
38
+
39
+ ### Background, Introduction, Glossary, Field of the Invention, Additional Description
40
+ Read `references/spec-guidance.md` for the drafting prompt for each section.
41
+
42
+ ## Editor (accordion)
43
+ **Always ask the user whether they want to open the spec editor to review/edit all sections at once** -- e.g. "Want me to open the spec editor so you can review every section together?" Only open it if they say yes. To open it, open `assets/spec_editor.html` with `INITIAL_CONTENT` set to the full sections object (each key a section name, including each "Figure N" as its own section). Each section is a collapsible accordion item with a text box (blank line = new paragraph). The user opens any section to edit, can add/remove sections, then clicks Copy for Save. On `[EDITOR SUBMIT - sections]`, strip the prefix and call `save_project({ type: "sections", sections: {...} })` with the returned object.
44
+
45
+ ## Notes
46
+ - Claims are already saved -- do not include them as a section here.
47
+ - For the one-at-a-time flow, use `save_project(type=section)` directly after the user confirms each section. For a full review pass, use the accordion editor above and save all at once with `save_project(type=sections)`.
48
+ - **Do NOT print automatically.** After all sections are saved, tell the user the specification is complete and ask whether they want the Word document generated. Only call `print_patent(type=spec)` when the user explicitly asks for it.
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python3
2
+ """Calculate figure layout metrics from figure JSON.
3
+ Usage: echo '[{"type":"Flowchart","number":"1","steps":[...]}]' | python calculate_figure_layout.py
4
+ """
5
+ import json, sys, math
6
+
7
+ MIN_H, CHARS_W, ARROW_H, MAX_PAGE = 0.75, 30, 0.5, 8.0
8
+
9
+ def layout_figure(fig):
10
+ t = (fig.get("type") or "").lower(); n = fig.get("number","?")
11
+ if t == "flowchart":
12
+ steps = fig.get("steps") or []; total = 0.0; details = []
13
+ for s in steps:
14
+ h = max(MIN_H, math.ceil(len(s.get("text",""))/CHARS_W)*0.25*4)
15
+ total += h; details.append({"number": s.get("number"), "estimatedHeightIn": round(h,2), "tooTall": h>2})
16
+ total += ARROW_H * max(0, len(steps)-1)
17
+ return {"figureNumber":n,"type":"Flowchart","totalHeightIn":round(total,2),"fitsOnPage":total<=MAX_PAGE,"steps":details}
18
+ elif t == "device":
19
+ comps = fig.get("components") or []
20
+ return {"figureNumber":n,"type":"Device","componentCount":len(comps),"components":[{"number":c.get("number"),"label":c.get("label")} for c in comps]}
21
+ return {"figureNumber":n,"type":t or "Unknown"}
22
+
23
+ def main():
24
+ data = json.loads(sys.stdin.read())
25
+ figs = data if isinstance(data, list) else data.get("figures",[])
26
+ layouts = [layout_figure(f) for f in figs]; warnings = []
27
+ for l in layouts:
28
+ if l.get("type")=="Flowchart" and not l.get("fitsOnPage"): warnings.append(f'Figure {l["figureNumber"]} exceeds page ({l["totalHeightIn"]}" > {MAX_PAGE}")')
29
+ if l.get("type")=="Device" and l.get("componentCount",0)>10: warnings.append(f'Figure {l["figureNumber"]} has {l["componentCount"]} components (max 10)')
30
+ print(json.dumps({"figureCount":len(figs),"layouts":layouts,"warnings":warnings,"readyToPrint":len(warnings)==0},indent=2))
31
+
32
+ if __name__=="__main__": main()
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env python3
2
+ """Parse patent claims text into structured JSON.
3
+ Usage: echo "<claims>" | python parse_claims.py
4
+ python parse_claims.py --file claims.txt --pretty
5
+ """
6
+ import json, re, sys, argparse
7
+
8
+ def parse_claims(text):
9
+ claims = []
10
+ parts = re.split(r'(\d+)\.\s+', text.strip())
11
+ i = 1
12
+ while i < len(parts):
13
+ num = parts[i].strip()
14
+ body = parts[i+1].strip() if i+1 < len(parts) else ""
15
+ dep = re.search(r'claim\s+(\d+)', body, re.IGNORECASE)
16
+ parent = dep.group(1) if dep else ""
17
+ lines = [ln.strip() for ln in body.split("\n") if ln.strip()] or [body]
18
+ claims.append({"claimNumber": num, "claimStatus": "original",
19
+ "claimType": "dependent" if dep else "independent",
20
+ "claimText": lines, "parent": parent, "independentParent": ""})
21
+ i += 2
22
+ by_num = {c["claimNumber"]: c for c in claims}
23
+ for c in claims:
24
+ if c["claimType"] != "dependent":
25
+ continue
26
+ cur, hops = c, 0
27
+ while cur and cur["claimType"] == "dependent" and cur["parent"] and hops < 100:
28
+ cur = by_num.get(cur["parent"]); hops += 1
29
+ c["independentParent"] = cur["claimNumber"] if cur and cur["claimType"] == "independent" else ""
30
+ indep = sum(1 for c in claims if c["claimType"] == "independent")
31
+ return {"claims": claims, "claimCount": len(claims), "independentClaimCount": indep, "dependentClaimCount": len(claims)-indep}
32
+
33
+ def main():
34
+ ap = argparse.ArgumentParser(); ap.add_argument("--file", "-f"); ap.add_argument("--pretty", "-p", action="store_true")
35
+ args = ap.parse_args()
36
+ text = open(args.file).read() if args.file else sys.stdin.read()
37
+ print(json.dumps(parse_claims(text), indent=2 if args.pretty else None))
38
+
39
+ if __name__ == "__main__": main()
@@ -0,0 +1 @@
1
+ place custom instructions here
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: fenix-office-action
3
+ description: >-
4
+ Office action response workflow: identify matter, verify or create project, generate OA response shell.
5
+ ---
6
+
7
+ # Fenix Office Action
8
+
9
+ **Skill version: 1** (authoritative version is in the top-level `VERSION` file; this line is for reference only).
10
+
11
+ ## Triggers
12
+
13
+ - office action response
14
+ - OA response
15
+ - respond to office action
16
+
17
+ ## Customization
18
+
19
+ Before applying any workflow in this skill, read the `CUSTOMIZE.md` file in this skill directory. If it contains anything other than the placeholder text "place custom instructions here", treat its contents as user overrides that take precedence over the default instructions in this SKILL.md and its reference files.
20
+
21
+ Apply the custom overrides **only as long as the result still satisfies every structured-output contract** this skill depends on, including:
22
+ - the JSON shapes passed to `save_project` (claims, figures, sections)
23
+ - the `[EDITOR SUBMIT - <type>]` clipboard prefixes produced by the HTML editors
24
+ - the figure ElementSchema (`type`, `label`, `number`, `text`) and component numbering rules
25
+ - the spec section names and ordering required by the save/print tools
26
+
27
+ Custom instructions may freely change tone, phrasing, default counts, section preferences, review emphasis, and similar. If a custom instruction would break a required format, follow the default format and tell the user which customization could not be applied and why.
28
+
29
+ ## Contents
30
+ - `references/oa-response.md` -- step-by-step OA response workflow
31
+
32
+ ## When to use this skill
33
+
34
+ Trigger whenever the user wants to generate an office action response shell or start working on an OA response:
35
+ - "office action response" / "OA response" / "respond to office action"
36
+ - "generate the OA shell" / "set up a new OA project" / "we got an office action"
37
+
38
+ ## How to use
39
+
40
+ Read `references/oa-response.md` for the complete 4-step workflow: identify matter -> check for existing project -> create project if needed -> generate shell with `print_patent(type=oa_shell)`.
@@ -0,0 +1 @@
1
+ 1
@@ -0,0 +1,10 @@
1
+ # Office Action Response Workflow
2
+
3
+ **Version: 1**
4
+
5
+ Read this before generating an OA response shell.
6
+
7
+ 1. **Identify matter** -- `get_project({ identifier })` (exact app/matter number) or `get_project({ query })` (keyword). Confirm with user.
8
+ 2. **Check for existing project** -- the `get_project` response includes a 'projects' array. Look for a project with an OA-response type. If one exists, use its ID.
9
+ 3. **Create project if none exists** -- 'list_project_types', collect notification date, due date, and assignee initials, then 'create_project'.
10
+ 4. **Generate shell** -- `print_patent({ type: "oa_shell", projectId })` fetches the latest USPTO documents (soft-fail if unavailable) and generates the Word OA response shell. Returns a download URL.
@@ -0,0 +1 @@
1
+ place custom instructions here
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: fenix-project
3
+ description: >-
4
+ Project creation and management: form-based intake, assignee verification, confirmation flow.
5
+ ---
6
+
7
+ # Fenix Project
8
+
9
+ **Skill version: 1** (authoritative version is in the top-level `VERSION` file; this line is for reference only).
10
+
11
+ ## Triggers
12
+
13
+ - create a project
14
+ - new project
15
+ - create_project
16
+
17
+ ## Customization
18
+
19
+ Before applying any workflow in this skill, read the `CUSTOMIZE.md` file in this skill directory. If it contains anything other than the placeholder text "place custom instructions here", treat its contents as user overrides that take precedence over the default instructions in this SKILL.md and its reference files.
20
+
21
+ Apply the custom overrides **only as long as the result still satisfies every structured-output contract** this skill depends on, including:
22
+ - the JSON shapes passed to `save_project` (claims, figures, sections)
23
+ - the `[EDITOR SUBMIT - <type>]` clipboard prefixes produced by the HTML editors
24
+ - the figure ElementSchema (`type`, `label`, `number`, `text`) and component numbering rules
25
+ - the spec section names and ordering required by the save/print tools
26
+
27
+ Custom instructions may freely change tone, phrasing, default counts, section preferences, review emphasis, and similar. If a custom instruction would break a required format, follow the default format and tell the user which customization could not be applied and why.
28
+
29
+ ## Contents
30
+ - `references/create-project.md` -- project creation intake workflow (assignee verification, field collection, confirmation, create)
31
+
32
+ ## When to use this skill
33
+
34
+ Trigger whenever the user wants to create a new project in Fenix:
35
+ - "create a project" / "new project" / "set up a project"
36
+ - "I need to start a new [OA / continuation / provisional / PCT]"
37
+ - Any request to create_project before the five required fields are confirmed
38
+
39
+ ## How to use
40
+
41
+ Read `references/create-project.md` for the 4-step intake flow: verify assignee -> collect five fields (matter/app number, notification date, project type, due date, assignee initials) -> confirm with user -> call 'create_project'.
@@ -0,0 +1 @@
1
+ 1
@@ -0,0 +1,10 @@
1
+ # Create Project
2
+
3
+ **Version: 1**
4
+
5
+ 1. **Verify assignee** -- 'get_user_by_initials'. If no match, ask user to correct initials.
6
+ 2. **Collect** -- matter/app number, notification date, project type ('list_project_types'), due date, assignee initials
7
+ 3. **Confirm** -- show all five values. Ask 'Ready to create -- any changes?' **END TURN**
8
+ 4. **Create** -- 'create_project' once confirmed
9
+
10
+ If any field is missing: render a React form with all five fields. On submit show confirmation block, then 'create_project'.