@airmark/quiver 0.32.2 → 0.34.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.
- package/README.md +63 -21
- package/package.json +9 -7
- package/quills/af4141/0.1.0/Quill.yaml +4 -13
- package/quills/af4141/0.1.0/example.md +53 -0
- package/quills/afmc_moa/0.0.1/Quill.yaml +39 -62
- package/quills/afmc_moa/0.0.1/example.md +114 -0
- package/quills/afmc_moa/0.0.1/packages/typst-afmc-moa/src/config.typ +1 -1
- package/quills/classic_resume/0.0.1/Quill.yaml +281 -0
- package/quills/classic_resume/0.0.1/example.md +111 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/LICENSE +21 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Bold.ttf +0 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-BoldItalic.ttf +0 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Italic.ttf +0 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/EBGaramond-Regular.ttf +0 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/fonts/EBGaramond/OFL.txt +94 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/components.typ +214 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/config.typ +61 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/layout.typ +86 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/lib.typ +7 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/src/util.typ +37 -0
- package/quills/classic_resume/0.0.1/packages/ttq-classic-resume/typst.toml +26 -0
- package/quills/classic_resume/0.0.1/plate.typ +143 -0
- package/quills/cyber_ribbon_chart/0.0.1/Quill.yaml +327 -0
- package/quills/cyber_ribbon_chart/0.0.1/example.md +55 -0
- package/quills/cyber_ribbon_chart/0.0.1/plate.typ +609 -0
- package/quills/daf1206/0.1.0/Quill.yaml +15 -18
- package/quills/daf1206/0.1.0/example.md +55 -0
- package/quills/daf4392/0.1.0/Quill.yaml +16 -7
- package/quills/daf4392/0.1.0/example.md +51 -0
- package/quills/daf4392/0.1.0/plate.typ +2 -2
- package/quills/usaf_letter/0.1.0/Quill.yaml +179 -0
- package/quills/usaf_letter/0.1.0/assets/dod_seal.png +0 -0
- package/quills/usaf_letter/0.1.0/assets/dow_seal.png +0 -0
- package/quills/usaf_letter/0.1.0/example.md +35 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/.gitignore +7 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/LICENSE +201 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/CopperplateCC/CopperplateCC-Bold.otf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/CopperplateCC/LICENSE.md +79 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/LiberationMono/LICENSE +102 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/LiberationMono/LiberationMono-Regular.ttf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/GNU General Public License.txt +340 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-Med.otf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-MedIta.otf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-Reg.otf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/NimbusRomanNo9L/NimbusRomNo9L-RegIta.otf +0 -0
- package/quills/{usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/LICENSE → usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/SpectralSC/OFL.txt} +2 -2
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/SpectralSC/SpectralSC-Italic.ttf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/fonts/SpectralSC/SpectralSC-Regular.ttf +0 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/backmatter.typ +32 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/config.typ +45 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/frontmatter.typ +226 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/lib.typ +35 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/mainmatter.typ +140 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/primitives.typ +544 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/src/utils.typ +334 -0
- package/quills/usaf_letter/0.1.0/packages/tonguetoquill-usaf-letter/typst.toml +22 -0
- package/quills/usaf_letter/0.1.0/plate.typ +121 -0
- package/quills/usaf_memo/0.2.0/Quill.yaml +8 -41
- package/quills/usaf_memo/0.2.0/example.md +45 -0
- package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/LICENSE +201 -21
- package/quills/usaf_memo/0.2.0/packages/tonguetoquill-usaf-memo/typst.toml +1 -1
- package/quills/usaf_memo/0.3.0/Quill.yaml +51 -69
- package/quills/usaf_memo/0.3.0/example.md +48 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/LICENSE +201 -21
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/SpectralSC/OFL.txt +93 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/SpectralSC/SpectralSC-Italic.ttf +0 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/SpectralSC/SpectralSC-Regular.ttf +0 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/backmatter.typ +29 -17
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/body.typ +97 -126
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/config.typ +12 -45
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/frontmatter.typ +81 -87
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/indorsement.typ +58 -66
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/lib.typ +14 -36
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/mainmatter.typ +47 -19
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/primitives.typ +158 -111
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/src/utils.typ +41 -141
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/typst.toml +3 -8
- package/quills/usaf_memo/0.3.0/plate.typ +78 -85
- package/templates/af4141.md +23 -0
- package/templates/appointment_letter.md +58 -0
- package/templates/daf1206.md +23 -0
- package/templates/daf4392.md +34 -0
- package/templates/deros_extension.md +40 -0
- package/templates/pass_request.md +48 -0
- package/templates/rebuttal.md +63 -0
- package/templates/templates.json +65 -0
- package/templates/usaf_template.md +30 -0
- package/templates/ussf_template.md +30 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/Cinzel/Cinzel[wght].ttf +0 -0
- package/quills/usaf_memo/0.3.0/packages/tonguetoquill-usaf-memo/fonts/CopperplateCC/CopperplateCC-Heavy.otf +0 -0
|
@@ -0,0 +1,327 @@
|
|
|
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: the assignment you hold now, then alternative
|
|
12
|
+
# vectors branching from it over the years the boards and schools fall in. The
|
|
13
|
+
# bottom half is the record that makes the plan credible.
|
|
14
|
+
main:
|
|
15
|
+
ui:
|
|
16
|
+
# The editor opens one group at a time, starting with the first, so each is a
|
|
17
|
+
# task finished without looking at another: who you are, where you are
|
|
18
|
+
# going, what you have done. The checklist is apart from the record because
|
|
19
|
+
# most visits skip it whole. The timeline's start year sits with the officer
|
|
20
|
+
# so every required field is in the group that opens.
|
|
21
|
+
groups:
|
|
22
|
+
officer: {}
|
|
23
|
+
plan: {}
|
|
24
|
+
record: {}
|
|
25
|
+
qualifications: { title: "Qualifications & experience" }
|
|
26
|
+
# The chart's one piece of prose. It is set on the ruled notes area at the
|
|
27
|
+
# foot of the page, and a rater goes on writing below it during the discussion.
|
|
28
|
+
description: "The body is what you want out of this discussion, and anything that shapes it that has no date to draw: a preference, an assignment you would turn down, a question for the rater. A constraint that ends in a known year goes in constraints, where the timeline can show it."
|
|
29
|
+
fields:
|
|
30
|
+
name:
|
|
31
|
+
# Read as `string` rather than `plaintext`: it reaches
|
|
32
|
+
# `set document(author:)`, which takes no content.
|
|
33
|
+
type: string
|
|
34
|
+
ui:
|
|
35
|
+
group: officer
|
|
36
|
+
description: "Grade and name as you want them read, set largest on the page, as in 'Capt John A. Snuffy'. This is also the exported PDF's title and author, so it is written out rather than marked up."
|
|
37
|
+
|
|
38
|
+
duty_title:
|
|
39
|
+
type: plaintext
|
|
40
|
+
inline: true
|
|
41
|
+
default: ""
|
|
42
|
+
ui:
|
|
43
|
+
group: officer
|
|
44
|
+
description: "The job you hold today, as in Instructor or Flight Commander. The unit goes in unit. It prints under your name and heads the current-assignment block the vectors branch from."
|
|
45
|
+
|
|
46
|
+
unit:
|
|
47
|
+
type: plaintext
|
|
48
|
+
inline: true
|
|
49
|
+
default: ""
|
|
50
|
+
ui:
|
|
51
|
+
group: officer
|
|
52
|
+
description: "Unit and base, as in '333 TRS, Keesler AFB'."
|
|
53
|
+
|
|
54
|
+
afsc:
|
|
55
|
+
type: plaintext
|
|
56
|
+
inline: true
|
|
57
|
+
default: ""
|
|
58
|
+
ui:
|
|
59
|
+
group: officer
|
|
60
|
+
compact: true
|
|
61
|
+
description: "Your AFSC with its skill level and any prefix, as in 17S3 or K17D3. It leads the line under your name, because it says which half of the career field the plan is in."
|
|
62
|
+
|
|
63
|
+
commissioning_yg:
|
|
64
|
+
type: integer
|
|
65
|
+
ui:
|
|
66
|
+
group: officer
|
|
67
|
+
compact: true
|
|
68
|
+
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."
|
|
69
|
+
|
|
70
|
+
adjusted_yg:
|
|
71
|
+
type: integer?
|
|
72
|
+
ui:
|
|
73
|
+
group: officer
|
|
74
|
+
compact: true
|
|
75
|
+
description: "Adjusted year group, if a board or a break in service moved yours. The chart counts every milestone from it and prints it as your year group, noting the one you commissioned in. Leave blank when it is unchanged; the chart then counts from your commissioning year group."
|
|
76
|
+
|
|
77
|
+
date_of_rank:
|
|
78
|
+
type: date
|
|
79
|
+
default: ""
|
|
80
|
+
ui:
|
|
81
|
+
group: officer
|
|
82
|
+
compact: true
|
|
83
|
+
description: "Date of rank in your current grade, YYYY-MM-DD. Leave blank to print a dash."
|
|
84
|
+
|
|
85
|
+
date_arrived_station:
|
|
86
|
+
type: date
|
|
87
|
+
default: ""
|
|
88
|
+
ui:
|
|
89
|
+
group: officer
|
|
90
|
+
compact: true
|
|
91
|
+
description: "Date arrived station, YYYY-MM-DD. Leave blank to print a dash."
|
|
92
|
+
|
|
93
|
+
timeline_start_year:
|
|
94
|
+
type: integer
|
|
95
|
+
ui:
|
|
96
|
+
group: officer
|
|
97
|
+
compact: true
|
|
98
|
+
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."
|
|
99
|
+
|
|
100
|
+
advanced_degree:
|
|
101
|
+
type: plaintext
|
|
102
|
+
inline: true
|
|
103
|
+
default: ""
|
|
104
|
+
ui:
|
|
105
|
+
group: officer
|
|
106
|
+
description: "Advanced academic degree, as in 'MS Cyber Operations, AFIT'. Add '(in progress)' for one you have not finished. Leave blank if you hold none: the slot prints a dash rather than disappearing, because its absence is itself information to a board."
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
timeline_years:
|
|
110
|
+
type: integer
|
|
111
|
+
default: 12
|
|
112
|
+
ui:
|
|
113
|
+
group: plan
|
|
114
|
+
compact: true
|
|
115
|
+
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."
|
|
116
|
+
|
|
117
|
+
move_year:
|
|
118
|
+
type: integer?
|
|
119
|
+
ui:
|
|
120
|
+
group: plan
|
|
121
|
+
compact: true
|
|
122
|
+
description: "The year you expect to leave this assignment. The current-assignment block runs until it and every vector starts from it, so this is the date a rater reads first. Every vector leaves on this one date; a vector that stays longer, say to upgrade in place, starts with that extension as its first tour. Leave blank to start the vectors at the left edge of the timeline with no current block."
|
|
123
|
+
|
|
124
|
+
move_cycle:
|
|
125
|
+
type: enum
|
|
126
|
+
values: [Summer, Winter]
|
|
127
|
+
default: Summer
|
|
128
|
+
ui:
|
|
129
|
+
group: plan
|
|
130
|
+
compact: true
|
|
131
|
+
description: "The VML cycle you would move on in that year. Winter moves print in the first half of the year and Summer moves in the second."
|
|
132
|
+
|
|
133
|
+
constraints:
|
|
134
|
+
type: array
|
|
135
|
+
max: 3
|
|
136
|
+
ui:
|
|
137
|
+
group: plan
|
|
138
|
+
layout: table
|
|
139
|
+
items:
|
|
140
|
+
type: object
|
|
141
|
+
properties:
|
|
142
|
+
note:
|
|
143
|
+
type: plaintext
|
|
144
|
+
inline: true
|
|
145
|
+
title: Constraint
|
|
146
|
+
description: "What limits the plan, short enough for a bar, as in 'Join-spouse, no OCONUS'."
|
|
147
|
+
through:
|
|
148
|
+
type: integer
|
|
149
|
+
title: Through
|
|
150
|
+
description: "The last year it holds."
|
|
151
|
+
default: []
|
|
152
|
+
description: "Anything that limits where or when you can move and ends in a known year: a join-spouse assignment, a degree finishing, a child's school year. Each prints under the timeline's years as a bar from its left edge to the end of the last year the constraint holds, above the vectors, so a rater sees which ones cross it. A constraint with no end year belongs in the body."
|
|
153
|
+
|
|
154
|
+
vectors:
|
|
155
|
+
type: array
|
|
156
|
+
max: 3
|
|
157
|
+
ui:
|
|
158
|
+
group: plan
|
|
159
|
+
items:
|
|
160
|
+
type: object
|
|
161
|
+
properties:
|
|
162
|
+
track:
|
|
163
|
+
type: plaintext
|
|
164
|
+
inline: true
|
|
165
|
+
default: ""
|
|
166
|
+
description: "What this vector is for, as in 'Command track' or 'Joint'. Its rank comes from its position: the first row prints as Primary, the second as Alternate, the third as Backup."
|
|
167
|
+
tours:
|
|
168
|
+
type: array
|
|
169
|
+
ui:
|
|
170
|
+
layout: table
|
|
171
|
+
items:
|
|
172
|
+
type: object
|
|
173
|
+
properties:
|
|
174
|
+
title:
|
|
175
|
+
type: plaintext
|
|
176
|
+
inline: true
|
|
177
|
+
title: Assignment
|
|
178
|
+
description: "Assignment and unit as you would say it, as in '333 TRS/DO' or 'Joint Staff J6'. Keep it to what fits: roughly twelve characters per year of length at the default width. A longer title sets smaller, or turns up the side of a narrow block, and one that fits neither way is left off its block."
|
|
179
|
+
years:
|
|
180
|
+
type: number
|
|
181
|
+
default: 2
|
|
182
|
+
title: Years
|
|
183
|
+
description: "Length in years, in halves: 0.5 to 4. The timeline is ruled in half-years, one per VML cycle, so a length is rounded to the nearest half, and one outside that range draws at the nearer end, marked with a dagger. A whole number of years keeps you on the cycle you moved in on; a half switches Summer to Winter or back."
|
|
184
|
+
school:
|
|
185
|
+
type: boolean
|
|
186
|
+
default: false
|
|
187
|
+
description: "Tick for a school you would move for, such as IDE or SDE in residence or 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."
|
|
188
|
+
description: "The assignments on this row, in the order you would serve them. The first starts on your move, and each one after starts when the one before it ends, so there are no dates to keep in step."
|
|
189
|
+
default:
|
|
190
|
+
- { track: "", tours: [] }
|
|
191
|
+
- { track: "", tours: [] }
|
|
192
|
+
- { track: "", tours: [] }
|
|
193
|
+
description: "One row per alternative career path after the assignment you hold now: a primary, an alternate and a backup, in that order. One is a plan; three is a conversation, and all the page holds."
|
|
194
|
+
|
|
195
|
+
stratifications:
|
|
196
|
+
type: array
|
|
197
|
+
max: 3
|
|
198
|
+
ui:
|
|
199
|
+
group: record
|
|
200
|
+
layout: table
|
|
201
|
+
items:
|
|
202
|
+
type: object
|
|
203
|
+
properties:
|
|
204
|
+
year:
|
|
205
|
+
type: integer
|
|
206
|
+
description: "The reporting year."
|
|
207
|
+
rater:
|
|
208
|
+
type: plaintext
|
|
209
|
+
inline: true
|
|
210
|
+
default: ""
|
|
211
|
+
title: Rater
|
|
212
|
+
description: "Your rater's stratification as it was written, as in '#1/14 Capts'."
|
|
213
|
+
hlr:
|
|
214
|
+
type: plaintext
|
|
215
|
+
inline: true
|
|
216
|
+
default: ""
|
|
217
|
+
title: Higher Level Reviewer
|
|
218
|
+
description: "Your Higher Level Reviewer's stratification as it was written, as in '#1/45 CGOs'. Leave blank where you drew none."
|
|
219
|
+
default: []
|
|
220
|
+
description: "Your last three years of stratifications, in any order: the page sets the most recent first. Three is all the page holds. Written out, a row is `{year: 2026, rater: \"#1/14 Capts\", hlr: \"#1/45 CGOs\"}`."
|
|
221
|
+
|
|
222
|
+
awards:
|
|
223
|
+
type: array
|
|
224
|
+
items:
|
|
225
|
+
type: plaintext
|
|
226
|
+
inline: true
|
|
227
|
+
default: []
|
|
228
|
+
ui:
|
|
229
|
+
group: record
|
|
230
|
+
description: "Major awards, one per line, strongest first. Wing level and above earns a line; anything smaller costs more room than it wins."
|
|
231
|
+
|
|
232
|
+
certifications:
|
|
233
|
+
type: array
|
|
234
|
+
items:
|
|
235
|
+
type: plaintext
|
|
236
|
+
inline: true
|
|
237
|
+
default: []
|
|
238
|
+
ui:
|
|
239
|
+
group: record
|
|
240
|
+
description: "Certifications and courses, one per line. Name the certification a board would recognize rather than every course you have sat. PME and the Cyber 200 and 300 courses are ticked under qualifications instead."
|
|
241
|
+
|
|
242
|
+
deployments:
|
|
243
|
+
type: array
|
|
244
|
+
items:
|
|
245
|
+
type: plaintext
|
|
246
|
+
inline: true
|
|
247
|
+
default: []
|
|
248
|
+
ui:
|
|
249
|
+
group: record
|
|
250
|
+
description: "Deployments and short tours, one per line, with the month you returned: it is what a rater needs to work out when you are next eligible."
|
|
251
|
+
|
|
252
|
+
# The page prints every member in four rows and marks the held ones, so an
|
|
253
|
+
# empty box is as much of the chart as a filled one. A row is a property
|
|
254
|
+
# here rather than a heading in the plate, so the partition is in the value
|
|
255
|
+
# and the address as well as on the page. The plate repeats each `title` as
|
|
256
|
+
# its row's label, since the data carries only the members.
|
|
257
|
+
qualifications:
|
|
258
|
+
type: object
|
|
259
|
+
ui:
|
|
260
|
+
group: qualifications
|
|
261
|
+
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. A ticked course or school also marks its milestone on the timeline done. Written out, a tick is `flight_cc: true`, and a tick with its detail `flight_cc: {detail: UMS Flt/CC}`; an unticked member is left out."
|
|
262
|
+
properties:
|
|
263
|
+
command:
|
|
264
|
+
type: matrix
|
|
265
|
+
title: Leadership & Command
|
|
266
|
+
ui:
|
|
267
|
+
compact: true
|
|
268
|
+
members:
|
|
269
|
+
sq_cc_candidate: Sq/CC Candidate
|
|
270
|
+
do_det_cc_candidate: DO / Det CC Candidate
|
|
271
|
+
flight_cc: Flight CC
|
|
272
|
+
director_of_operations: Director of Operations
|
|
273
|
+
detachment_cc: Detachment CC
|
|
274
|
+
squadron_cc: Squadron CC
|
|
275
|
+
properties: &detail
|
|
276
|
+
detail:
|
|
277
|
+
type: plaintext
|
|
278
|
+
inline: true
|
|
279
|
+
default: ""
|
|
280
|
+
description: "The unit, course, year or distinction that proves it, set in italics after the label, as in '23 IOS' or 'DG'. Leave blank where the label says enough on its own."
|
|
281
|
+
operations:
|
|
282
|
+
type: matrix
|
|
283
|
+
title: Operations
|
|
284
|
+
ui:
|
|
285
|
+
compact: true
|
|
286
|
+
members:
|
|
287
|
+
dodin_ops: DODIN Ops
|
|
288
|
+
dco: DCO (Defensive)
|
|
289
|
+
oco: OCO (Offensive)
|
|
290
|
+
crew_cc: Crew CC
|
|
291
|
+
cyber_engineer: Cyber Engineer
|
|
292
|
+
team_lead: Team Lead (MDT / CPT)
|
|
293
|
+
expeditionary_comms: Expeditionary Comms
|
|
294
|
+
mission_cc: Mission CC
|
|
295
|
+
properties: *detail
|
|
296
|
+
staff:
|
|
297
|
+
type: matrix
|
|
298
|
+
title: Staff & Functional
|
|
299
|
+
ui:
|
|
300
|
+
compact: true
|
|
301
|
+
members:
|
|
302
|
+
exec_aide_cag: Exec / Aide / CAG
|
|
303
|
+
haf_staff: HAF Staff
|
|
304
|
+
majcom_naf_staff: MAJCOM / NAF Staff
|
|
305
|
+
joint_staff: Joint Staff
|
|
306
|
+
instructor: Instructor
|
|
307
|
+
jqo: Joint Qualified Officer (JQO)
|
|
308
|
+
properties: *detail
|
|
309
|
+
# Completion and distinction are one tick and its detail, so SOS held
|
|
310
|
+
# with detail DG reads as both. Candidate and graduate are two ticks:
|
|
311
|
+
# they are different rungs, and a board reads them differently.
|
|
312
|
+
education:
|
|
313
|
+
type: matrix
|
|
314
|
+
title: Education & PME
|
|
315
|
+
ui:
|
|
316
|
+
compact: true
|
|
317
|
+
members:
|
|
318
|
+
commissioning_dg: Commissioning Source DG
|
|
319
|
+
sos: SOS
|
|
320
|
+
cyber_200: Cyber 200
|
|
321
|
+
cyber_300: Cyber 300
|
|
322
|
+
ide_candidate: IDE Candidate
|
|
323
|
+
ide_graduate: IDE Graduate
|
|
324
|
+
sde_candidate: SDE Candidate
|
|
325
|
+
sde_graduate: SDE Graduate
|
|
326
|
+
weapons_school: Weapons School / WIC DG
|
|
327
|
+
properties: *detail
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
~~~
|
|
2
|
+
$quill: cyber_ribbon_chart
|
|
3
|
+
name: Capt John A. Snuffy
|
|
4
|
+
afsc: 17S3
|
|
5
|
+
duty_title: Instructor
|
|
6
|
+
unit: 333 TRS, Keesler AFB
|
|
7
|
+
date_arrived_station: 2025-06-15
|
|
8
|
+
move_year: 2028
|
|
9
|
+
move_cycle: Summer
|
|
10
|
+
commissioning_yg: 2022
|
|
11
|
+
date_of_rank: 2026-05-01
|
|
12
|
+
advanced_degree: MS Cyber Operations, AFIT
|
|
13
|
+
constraints:
|
|
14
|
+
- { note: "Join-spouse, no OCONUS", through: 2029 }
|
|
15
|
+
vectors:
|
|
16
|
+
- track: Command
|
|
17
|
+
tours:
|
|
18
|
+
- { title: 333 TRS/DO, years: 2 }
|
|
19
|
+
- { title: IDE in residence, years: 1, school: true }
|
|
20
|
+
- { title: "Sq/CC, Scott AFB", years: 2 }
|
|
21
|
+
- track: Staff depth
|
|
22
|
+
tours:
|
|
23
|
+
- { title: 17X CFM Staff, years: 2.5 }
|
|
24
|
+
- { title: MAJCOM A3 Division Chief, years: 2 }
|
|
25
|
+
- track: Joint
|
|
26
|
+
tours:
|
|
27
|
+
- { title: Joint Staff J6, years: 3 }
|
|
28
|
+
- { title: USCYBERCOM JFHQ-C, years: 2.5 }
|
|
29
|
+
stratifications:
|
|
30
|
+
- { year: 2026, rater: "#1/14 Capts", hlr: "#1/45 Capts" }
|
|
31
|
+
- { year: 2025, rater: "#2/12 Lts", hlr: "#3/40 CGOs" }
|
|
32
|
+
- { year: 2024, rater: "#1/8 Lts, #2/40 Instructors" }
|
|
33
|
+
awards:
|
|
34
|
+
- Wing CGOQ x2
|
|
35
|
+
- HAF A2/6 CGOY 2025
|
|
36
|
+
certifications:
|
|
37
|
+
- SANS FOR577 (GLIR)
|
|
38
|
+
- CISSP
|
|
39
|
+
- Security+
|
|
40
|
+
deployments:
|
|
41
|
+
- 1x short tour, returned Jan 2024
|
|
42
|
+
qualifications:
|
|
43
|
+
operations:
|
|
44
|
+
dodin_ops: true
|
|
45
|
+
dco: { detail: 23 IOS }
|
|
46
|
+
crew_cc: true
|
|
47
|
+
staff:
|
|
48
|
+
instructor: { detail: 333 TRS }
|
|
49
|
+
education:
|
|
50
|
+
sos: { detail: DG }
|
|
51
|
+
cyber_200: { detail: "2025" }
|
|
52
|
+
timeline_start_year: 2026
|
|
53
|
+
~~~
|
|
54
|
+
|
|
55
|
+
What I want out of this discussion: the DO seat at the 333 TRS when my instructor tour ends, then IDE in residence. I'd rather not go to staff before I've had a DO job.
|