@airmark/quiver 0.32.1 → 0.33.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 (76) hide show
  1. package/README.md +54 -18
  2. package/package.json +8 -6
  3. package/quills/af4141/0.1.0/Quill.yaml +1 -1
  4. package/quills/afmc_moa/0.0.1/Quill.yaml +10 -17
  5. package/quills/classic_resume/0.0.1/Quill.yaml +361 -0
  6. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/LICENSE +21 -0
  7. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Bold.ttf +0 -0
  8. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-BoldItalic.ttf +0 -0
  9. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Italic.ttf +0 -0
  10. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Regular.ttf +0 -0
  11. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/OFL.txt +94 -0
  12. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/components.typ +181 -0
  13. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/config.typ +53 -0
  14. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/layout.typ +57 -0
  15. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/lib.typ +6 -0
  16. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/util.typ +32 -0
  17. package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/typst.toml +26 -0
  18. package/quills/classic_resume/0.0.1/plate.typ +143 -0
  19. package/quills/cyber_ribbon_chart/0.0.1/Quill.yaml +320 -0
  20. package/quills/cyber_ribbon_chart/0.0.1/plate.typ +428 -0
  21. package/quills/daf1206/0.1.0/Quill.yaml +1 -2
  22. package/quills/daf4392/0.1.0/Quill.yaml +15 -1
  23. package/quills/daf4392/0.1.0/plate.typ +2 -2
  24. package/quills/usaf_letter/0.1.0/Quill.yaml +214 -0
  25. package/quills/usaf_letter/0.1.0/assets/dod_seal.png +0 -0
  26. package/quills/usaf_letter/0.1.0/assets/dow_seal.png +0 -0
  27. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/.gitignore +7 -0
  28. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/LICENSE +201 -0
  29. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/Cinzel/Cinzel-Regular.ttf +0 -0
  30. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/Cinzel/LICENSE +93 -0
  31. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/CopperplateCC/CopperplateCC-Bold.otf +0 -0
  32. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/CopperplateCC/CopperplateCC-Heavy.otf +0 -0
  33. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/CopperplateCC/LICENSE.md +79 -0
  34. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/LiberationMono/LICENSE +102 -0
  35. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/LiberationMono/LiberationMono-Regular.ttf +0 -0
  36. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/GNU General Public License.txt +340 -0
  37. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-Med.otf +0 -0
  38. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-MedIta.otf +0 -0
  39. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-Reg.otf +0 -0
  40. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-RegIta.otf +0 -0
  41. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/backmatter.typ +32 -0
  42. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/config.typ +45 -0
  43. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/frontmatter.typ +226 -0
  44. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/lib.typ +35 -0
  45. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/mainmatter.typ +140 -0
  46. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/primitives.typ +544 -0
  47. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/utils.typ +334 -0
  48. package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/typst.toml +22 -0
  49. package/quills/usaf_letter/0.1.0/plate.typ +124 -0
  50. package/quills/usaf_memo/0.2.0/Quill.yaml +1 -1
  51. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/LICENSE +201 -21
  52. package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/typst.toml +1 -1
  53. package/quills/usaf_memo/0.3.0/Quill.yaml +75 -56
  54. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/LICENSE +201 -21
  55. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/Cinzel-Regular.ttf +0 -0
  56. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/backmatter.typ +29 -17
  57. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/body.typ +97 -126
  58. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/config.typ +12 -45
  59. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/frontmatter.typ +81 -87
  60. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/indorsement.typ +58 -66
  61. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/lib.typ +14 -36
  62. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/mainmatter.typ +47 -19
  63. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/primitives.typ +178 -121
  64. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/utils.typ +41 -141
  65. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/typst.toml +3 -8
  66. package/quills/usaf_memo/0.3.0/plate.typ +89 -85
  67. package/templates/af4141.md +23 -0
  68. package/templates/appointment_letter.md +58 -0
  69. package/templates/daf1206.md +23 -0
  70. package/templates/daf4392.md +34 -0
  71. package/templates/pass_request.md +48 -0
  72. package/templates/rebuttal.md +63 -0
  73. package/templates/templates.json +58 -0
  74. package/templates/usaf_template.md +30 -0
  75. package/templates/ussf_template.md +30 -0
  76. package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/Cinzel[wght].ttf +0 -0
@@ -0,0 +1,320 @@
1
+ quill:
2
+ name: cyber_ribbon_chart
3
+ version: 0.0.1
4
+ backend: typst
5
+ description: 17X Cyber Operations Officer ribbon chart and career vector planner
6
+
7
+ typst:
8
+ plate_file: plate.typ
9
+
10
+ # One landscape page an officer hands to a senior rater or a development team.
11
+ # The top half is the plan — alternative assignment vectors laid over the years
12
+ # the boards and schools fall in. The bottom half is the record that makes the
13
+ # plan credible.
14
+ main:
15
+ ui:
16
+ groups:
17
+ officer: {}
18
+ timeline: {}
19
+ record: {}
20
+ qualifications: { title: "Qualifications & experience" }
21
+ # The chart's one piece of prose. It heads the notes area at the foot of the
22
+ # page, above ruled lines a rater writes on during the discussion.
23
+ body:
24
+ example: |
25
+ What you want out of this discussion, and anything that constrains it — a join-spouse, a degree finishing, a date you cannot move before.
26
+ fields:
27
+ name:
28
+ # Read as `string` rather than `plaintext`: it reaches
29
+ # `set document(author:)`, which takes no content.
30
+ type: string
31
+ example: Capt John A. Snuffy
32
+ ui:
33
+ group: officer
34
+ description: "Grade and name as you want them read, set largest on the page. This is also the exported PDF's title and author, so it is written out rather than marked up."
35
+
36
+ duty_title:
37
+ type: plaintext
38
+ inline: true
39
+ default: ""
40
+ example: 17S Instructor · 333 TRS, Keesler AFB
41
+ ui:
42
+ group: officer
43
+ description: "Current duty title and unit, printed in one line under your name. Where you are today, not where you are going."
44
+
45
+ commissioning_yg:
46
+ type: integer
47
+ example: 2022
48
+ ui:
49
+ group: officer
50
+ compact: true
51
+ description: "Commissioning year group. Every milestone on the timeline is counted from this year, so it is the one number that changes the whole chart — a board at YG+8 lands in this year plus eight."
52
+
53
+ adjusted_yg:
54
+ type: integer
55
+ default: 0
56
+ ui:
57
+ group: officer
58
+ compact: true
59
+ description: "Adjusted year group, if a board or a break in service moved yours. Leave at 0 when it is unchanged; the chart then counts from your commissioning year group and prints nothing here."
60
+
61
+ date_of_rank:
62
+ type: date
63
+ default: ""
64
+ example: 2026-05-01
65
+ ui:
66
+ group: officer
67
+ compact: true
68
+ description: "Date of rank in your current grade, YYYY-MM-DD. Leave blank to print a dash."
69
+
70
+ date_arrived_station:
71
+ type: date
72
+ default: ""
73
+ example: 2025-06-15
74
+ ui:
75
+ group: officer
76
+ compact: true
77
+ description: "Date arrived station, YYYY-MM-DD. Read together with your first tour's length, it is what tells a rater when you are actually available to move."
78
+
79
+ advanced_degree:
80
+ type: plaintext
81
+ inline: true
82
+ default: ""
83
+ example: MS Cyber Operations, AFIT
84
+ ui:
85
+ group: officer
86
+ compact: true
87
+ description: "Advanced academic degree, in hand or in progress. Leave blank if you hold none — the slot prints a dash rather than disappearing, because its absence is itself information to a board."
88
+
89
+ timeline_start_year:
90
+ type: integer
91
+ example: 2026
92
+ ui:
93
+ group: timeline
94
+ compact: true
95
+ description: "First calendar year the timeline shows. Usually the current year: the chart is a plan, so it starts where you are, not where you commissioned."
96
+
97
+ timeline_years:
98
+ type: integer
99
+ default: 12
100
+ ui:
101
+ group: timeline
102
+ compact: true
103
+ description: "How many years wide the timeline is. Twelve carries a Captain from today past the Lt Col board and is the comfortable reading width. The full milestone ladder runs to YG+17, so widening it toward eighteen brings the SDE looks into view at the cost of narrower columns; any milestone that falls outside the window is counted in a note rather than dropped."
104
+
105
+ vectors:
106
+ type: array
107
+ max: 3
108
+ items:
109
+ type: object
110
+ properties:
111
+ label:
112
+ type: plaintext
113
+ inline: true
114
+ default: ""
115
+ example: Command track
116
+ description: "Short name for the row, set in bold at the left of the timeline. Leave blank to print 'Vector 1', 'Vector 2' and so on in the order the rows stand."
117
+ focus:
118
+ type: plaintext
119
+ inline: true
120
+ default: ""
121
+ example: Primary
122
+ description: "What this vector is for, set small under the label — 'Primary', 'Alternate', 'Backup'. Leave blank where the label already says it."
123
+ tours:
124
+ type: array
125
+ ui:
126
+ layout: table
127
+ items:
128
+ type: object
129
+ properties:
130
+ title:
131
+ type: plaintext
132
+ inline: true
133
+ example: 333 TRS Instructor
134
+ title: Assignment
135
+ description: "Assignment and unit, set in the block. Keep it to what fits — roughly twenty characters per year of length at the default width."
136
+ duration:
137
+ type: enum
138
+ values: ["0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4"]
139
+ default: "2"
140
+ title: Years
141
+ description: "Length in years. The timeline is ruled in half-years, which is why the choices stop at the half."
142
+ vml:
143
+ type: enum
144
+ values: [Summer, Winter]
145
+ default: Summer
146
+ title: VML
147
+ description: "Which VML cycle you would move on. This places the tour rather than labelling it: a Summer tour starts in the second half of a year and a Winter tour in the first. Where that means waiting, the wait is added to the tour before it rather than left as a hole — you hold a job until you move — so a tour can print longer than the length you gave it."
148
+ school:
149
+ type: boolean
150
+ default: false
151
+ description: "Tick for a school you would move for — IDE or SDE in residence, Weapons School — rather than a duty assignment. It prints outlined instead of filled, so a year in a classroom does not read as a year in a job."
152
+ description: "The assignments on this row, in the order you would serve them. Tours lay end to end from the start of the timeline, so there are no dates to keep in step."
153
+ default:
154
+ - { label: Vector 1, focus: Primary, tours: [] }
155
+ - { label: Vector 2, focus: Alternate, tours: [] }
156
+ - { label: Vector 3, focus: Backup, tours: [] }
157
+ example:
158
+ - label: Vector 1
159
+ focus: Primary — command track
160
+ tours:
161
+ - { title: 333 TRS Instructor, duration: "4", vml: Summer }
162
+ - { title: 333 TRS / DO, duration: "3.5", vml: Winter }
163
+ - { title: IDE in residence, duration: "1", vml: Summer, school: true }
164
+ - label: Vector 2
165
+ focus: Alternate — staff depth
166
+ tours:
167
+ - { title: 17X CFM Staff, duration: "2.5", vml: Winter }
168
+ - { title: MAJCOM A3 Division Chief, duration: "2", vml: Summer }
169
+ - label: Vector 3
170
+ focus: Backup — joint
171
+ tours:
172
+ - { title: Joint Staff J6, duration: "3", vml: Summer }
173
+ - { title: USCYBERCOM JFHQ-C, duration: "2.5", vml: Winter }
174
+ ui:
175
+ group: timeline
176
+ description: "One row per alternative career path. Three is the conventional chart and all the page holds — a primary, an alternate, and a backup. One is a plan; three is a conversation."
177
+
178
+ stratifications:
179
+ type: array
180
+ ui:
181
+ group: record
182
+ layout: table
183
+ items:
184
+ type: object
185
+ properties:
186
+ year:
187
+ type: plaintext
188
+ inline: true
189
+ example: "2026"
190
+ description: "The reporting year."
191
+ rater_strat:
192
+ type: plaintext
193
+ inline: true
194
+ default: ""
195
+ example: "#1/14 Capts"
196
+ title: Rater
197
+ description: "Your rater's stratification as it was written, such as '#1/14 Capts'."
198
+ hlr_strat:
199
+ type: plaintext
200
+ inline: true
201
+ default: ""
202
+ example: "#1/45 Capts"
203
+ title: Higher Level Reviewer
204
+ description: "Your Higher Level Reviewer's stratification as it was written, such as '#1/45 Capts'. Leave blank where you drew none."
205
+ default: []
206
+ example:
207
+ - { year: "2026", rater_strat: "#1/14 Capts", hlr_strat: "#1/45 Capts" }
208
+ - { year: "2025", rater_strat: "#2/12 Capts", hlr_strat: "#3/40 Capts" }
209
+ - { year: "2024", rater_strat: "#1/8 Lts, #2/40 Instructors", hlr_strat: "" }
210
+ description: "Your last three years of stratifications, most recent first. Three is what the page is built for; more rows will set, and the section grows to hold them. Written out, a row is `{year: \"2026\", rater_strat: \"#1/14 Capts\", hlr_strat: \"#1/45 CGOs\"}`."
211
+
212
+ awards:
213
+ type: array
214
+ items:
215
+ type: plaintext
216
+ inline: true
217
+ default: []
218
+ example:
219
+ - Wing CGOQ ×2
220
+ - HAF A2/6 CGOY 2025
221
+ ui:
222
+ group: record
223
+ description: "Major awards, one per line, strongest first. Wing level and above earns a line; anything smaller costs more room than it wins."
224
+
225
+ certifications:
226
+ type: array
227
+ items:
228
+ type: plaintext
229
+ inline: true
230
+ default: []
231
+ example:
232
+ - SANS FOR577 (GLIR)
233
+ - CISSP
234
+ - Security+
235
+ ui:
236
+ group: record
237
+ description: "Certifications and courses, one per line. Name the certification a board would recognize rather than every course you have sat."
238
+
239
+ deployments:
240
+ type: array
241
+ items:
242
+ type: plaintext
243
+ inline: true
244
+ default: []
245
+ example:
246
+ - 1× short tour — returned Jan 2024
247
+ ui:
248
+ group: record
249
+ description: "Deployments and short tours, one per line. Include the return date: it is what a rater needs to work out when you are next eligible."
250
+
251
+ # The page prints every member in four columns and marks the held ones, so
252
+ # an empty box is as much of the chart as a filled one. A column is a
253
+ # property here rather than a heading in the plate, so the partition is in
254
+ # the value and the address as well as on the page.
255
+ qualifications:
256
+ type: object
257
+ ui:
258
+ group: qualifications
259
+ description: "Tick what you hold. The page prints the whole 17X vocabulary and marks these — a rater reads the empty boxes as readily as the filled ones, so what you have not done yet is on the page whether you tick it or not. Written out, a tick is `flight_cc: true`, and a tick with its detail `flight_cc: {held: true, detail: 333 TRS/DO}`."
260
+ properties:
261
+ command:
262
+ type: matrix
263
+ title: Leadership & Command
264
+ ui:
265
+ compact: true
266
+ members:
267
+ sq_cc_candidate: Sq/CC Candidate
268
+ do_det_cc_candidate: DO / Det CC Candidate
269
+ flight_cc: Flight CC
270
+ director_of_operations: Director of Operations
271
+ detachment_cc: Detachment CC
272
+ squadron_cc: Squadron CC
273
+ properties: &detail
274
+ detail:
275
+ type: plaintext
276
+ inline: true
277
+ default: ""
278
+ example: "2025"
279
+ description: "The unit, course, or year that proves it, set in italics under the label. Leave blank where the label says enough on its own."
280
+ operations:
281
+ type: matrix
282
+ ui:
283
+ compact: true
284
+ members:
285
+ dodin_ops: DODIN Ops
286
+ dco: DCO (Defensive)
287
+ oco: OCO (Offensive)
288
+ crew_cc: Crew CC
289
+ cyber_engineer: Cyber Engineer
290
+ team_lead: Team Lead (MDT / CPT)
291
+ expeditionary_comms: Expeditionary Comms
292
+ mission_cc: Mission CC
293
+ properties: *detail
294
+ staff:
295
+ type: matrix
296
+ title: Staff & Functional
297
+ ui:
298
+ compact: true
299
+ members:
300
+ exec_aide_cag: Exec / Aide / CAG
301
+ haf_staff: HAF Staff
302
+ majcom_naf_staff: MAJCOM / NAF Staff
303
+ joint_staff: Joint Staff
304
+ instructor: Instructor
305
+ jqo: Joint Qualified Officer (JQO)
306
+ properties: *detail
307
+ education:
308
+ type: matrix
309
+ title: Education & PME
310
+ ui:
311
+ compact: true
312
+ members:
313
+ commissioning_dg: Commissioning Source DG
314
+ sos_dg: SOS DG / Top Third
315
+ cyber_200: Cyber 200
316
+ cyber_300: Cyber 300
317
+ ide: IDE Candidate / Graduate
318
+ sde: SDE Candidate / Graduate
319
+ weapons_school: Weapons School / WIC DG
320
+ properties: *detail