@tonguetoquill/collection 0.13.5 → 0.15.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/package.json +2 -2
- package/quills/af4141/0.1.0/Quill.yaml +3 -3
- package/quills/af4141/0.1.0/example.md +9 -9
- package/quills/af4141/0.1.0/plate.typ +11 -1
- package/quills/classic_resume/0.1.0/Quill.yaml +4 -4
- package/quills/classic_resume/0.1.0/example.md +37 -37
- package/quills/classic_resume/0.1.0/plate.typ +5 -5
- package/quills/cmu_letter/0.1.0/example.md +4 -5
- package/quills/cmu_letter/0.1.0/plate.typ +6 -2
- package/quills/daf4392/0.1.0/plate.typ +10 -3
- package/quills/usaf_memo/0.1.0/Quill.yaml +2 -3
- package/quills/usaf_memo/0.1.0/plate.typ +2 -2
- package/quills/usaf_memo/0.2.0/Quill.yaml +13 -10
- package/quills/usaf_memo/0.2.0/plate.typ +2 -2
- package/templates/af4141.md +1 -1
- package/templates/cmu_letter_template.md +2 -2
- package/templates/loc.md +4 -6
- package/templates/pass_request.md +7 -7
- package/templates/rebuttal.md +7 -7
- package/templates/templates.json +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tonguetoquill/collection",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/nibsbin/tonguetoquill-collection.git"
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
"dependencies": {},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@quillmark/registry": "^0.12.0",
|
|
40
|
-
"@quillmark/wasm": "^0.
|
|
40
|
+
"@quillmark/wasm": "^0.53.1"
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -41,7 +41,7 @@ cards:
|
|
|
41
41
|
fields:
|
|
42
42
|
date:
|
|
43
43
|
title: Date
|
|
44
|
-
type:
|
|
44
|
+
type: date
|
|
45
45
|
ui:
|
|
46
46
|
group: Record
|
|
47
47
|
description: Date of the action (column A).
|
|
@@ -63,7 +63,7 @@ cards:
|
|
|
63
63
|
|
|
64
64
|
written_grade_date:
|
|
65
65
|
title: Written Grade Date
|
|
66
|
-
type:
|
|
66
|
+
type: date
|
|
67
67
|
ui:
|
|
68
68
|
group: Record
|
|
69
69
|
compact: true
|
|
@@ -79,7 +79,7 @@ cards:
|
|
|
79
79
|
|
|
80
80
|
positional_grade_date:
|
|
81
81
|
title: Positional Grade Date
|
|
82
|
-
type:
|
|
82
|
+
type: date
|
|
83
83
|
ui:
|
|
84
84
|
group: Record
|
|
85
85
|
compact: true
|
|
@@ -30,7 +30,7 @@ commanders_auth: ""
|
|
|
30
30
|
<!-- Example 1: Initial assignment to a unit -->
|
|
31
31
|
---
|
|
32
32
|
CARD: experience
|
|
33
|
-
date:
|
|
33
|
+
date: 2025-01-15
|
|
34
34
|
action: "Assigned to 1 ACCS/DOT as Weapons Director"
|
|
35
35
|
written_grade: ""
|
|
36
36
|
written_grade_date: ""
|
|
@@ -42,10 +42,10 @@ auth_or_remarks: "Initial assignment"
|
|
|
42
42
|
<!-- Example 2: Written upgrade evaluation -->
|
|
43
43
|
---
|
|
44
44
|
CARD: experience
|
|
45
|
-
date:
|
|
45
|
+
date: 2025-03-15
|
|
46
46
|
action: "Completed written upgrade evaluation for 3-Level"
|
|
47
47
|
written_grade: "3"
|
|
48
|
-
written_grade_date:
|
|
48
|
+
written_grade_date: 2025-03-15
|
|
49
49
|
positional_grade: ""
|
|
50
50
|
positional_grade_date: ""
|
|
51
51
|
auth_or_remarks: "Per AFMAN 13-1CRCV1"
|
|
@@ -54,31 +54,31 @@ auth_or_remarks: "Per AFMAN 13-1CRCV1"
|
|
|
54
54
|
<!-- Example 3: Positional (live-environment) upgrade / certification -->
|
|
55
55
|
---
|
|
56
56
|
CARD: experience
|
|
57
|
-
date:
|
|
57
|
+
date: 2025-06-20
|
|
58
58
|
action: "Certified Mission Ready — positional upgrade"
|
|
59
59
|
written_grade: ""
|
|
60
60
|
written_grade_date: ""
|
|
61
61
|
positional_grade: "4"
|
|
62
|
-
positional_grade_date:
|
|
62
|
+
positional_grade_date: 2025-06-20
|
|
63
63
|
auth_or_remarks: "SSgt Jones, T.R."
|
|
64
64
|
---
|
|
65
65
|
|
|
66
66
|
<!-- Example 4: Combined written + positional upgrade (both columns filled) -->
|
|
67
67
|
---
|
|
68
68
|
CARD: experience
|
|
69
|
-
date:
|
|
69
|
+
date: 2025-08-01
|
|
70
70
|
action: "Upgrade evaluation — written and positional"
|
|
71
71
|
written_grade: "4"
|
|
72
|
-
written_grade_date:
|
|
72
|
+
written_grade_date: 2025-08-01
|
|
73
73
|
positional_grade: "4"
|
|
74
|
-
positional_grade_date:
|
|
74
|
+
positional_grade_date: 2025-08-01
|
|
75
75
|
auth_or_remarks: "Verified by unit commander"
|
|
76
76
|
---
|
|
77
77
|
|
|
78
78
|
<!-- Example 5: PCS departure — no grade columns needed -->
|
|
79
79
|
---
|
|
80
80
|
CARD: experience
|
|
81
|
-
date:
|
|
81
|
+
date: 2025-09-01
|
|
82
82
|
action: "PCS to 726 ACS/MOC, Tinker AFB OK"
|
|
83
83
|
written_grade: ""
|
|
84
84
|
written_grade_date: ""
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
#set text(font: ("NimbusRomNo9L", "Times New Roman", "serif"))
|
|
5
5
|
|
|
6
|
+
// `type: date` fields arrive as Typst `datetime`; PDF overlay expects strings.
|
|
7
|
+
#let form-cell(v) = {
|
|
8
|
+
if v == none { "" }
|
|
9
|
+
else if type(v) == datetime {
|
|
10
|
+
v.display("[month padding:none]/[day padding:none]/[year]")
|
|
11
|
+
} else {
|
|
12
|
+
str(v)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
6
16
|
// Column order within each 7-field row group
|
|
7
17
|
#let col-keys = (
|
|
8
18
|
"date",
|
|
@@ -33,7 +43,7 @@
|
|
|
33
43
|
if card.CARD == "experience" {
|
|
34
44
|
if row < max-rows {
|
|
35
45
|
for (col, key) in col-keys.enumerate() {
|
|
36
|
-
let value = card.at(key, default:
|
|
46
|
+
let value = form-cell(card.at(key, default: none))
|
|
37
47
|
if value != "" {
|
|
38
48
|
let field-name = if row < 16 {
|
|
39
49
|
// Page 1: fields start at index 4, stride 7
|
|
@@ -38,17 +38,17 @@ cards:
|
|
|
38
38
|
title: Section Title
|
|
39
39
|
type: string
|
|
40
40
|
default: Experience
|
|
41
|
-
|
|
41
|
+
heading_left:
|
|
42
42
|
title: Heading Left (e.g., Company/School)
|
|
43
43
|
type: string
|
|
44
44
|
required: true
|
|
45
|
-
|
|
45
|
+
heading_right:
|
|
46
46
|
title: Heading Right (e.g., Location)
|
|
47
47
|
type: string
|
|
48
|
-
|
|
48
|
+
subheading_left:
|
|
49
49
|
title: Subheading Left (e.g., Title/Degree)
|
|
50
50
|
type: string
|
|
51
|
-
|
|
51
|
+
subheading_right:
|
|
52
52
|
title: Subheading Right (e.g., Date)
|
|
53
53
|
type: string
|
|
54
54
|
|
|
@@ -36,10 +36,10 @@ cells:
|
|
|
36
36
|
---
|
|
37
37
|
CARD: experience_section
|
|
38
38
|
title: Work Experience
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
heading_left: Templar Archives Research Division
|
|
40
|
+
heading_right: August 2024 – Present
|
|
41
|
+
subheading_left: Psionic Research Analyst
|
|
42
|
+
subheading_right: Aiur
|
|
43
43
|
---
|
|
44
44
|
|
|
45
45
|
- Analyzed Khala disruption patterns following Amon's corruption, developing countermeasures to protect remaining neural link infrastructure.
|
|
@@ -47,10 +47,10 @@ subheadingRight: Aiur
|
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
CARD: experience_section
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
heading_left: Terran Dominion Ghost Academy
|
|
51
|
+
heading_right: May 2025 – July 2025
|
|
52
|
+
subheading_left: Covert Ops Trainee
|
|
53
|
+
subheading_right: Tarsonis (Remote)
|
|
54
54
|
---
|
|
55
55
|
|
|
56
56
|
- Developed tactical HUD displays for Ghost operatives integrating real-time Zerg hive cluster intelligence.
|
|
@@ -59,10 +59,10 @@ subheadingRight: Tarsonis (Remote)
|
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
CARD: experience_section
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
heading_left: Abathur's Evolution Pit
|
|
63
|
+
heading_right: June 2023 – July 2023
|
|
64
|
+
subheading_left: Biomass Research Intern
|
|
65
|
+
subheading_right: Char
|
|
66
66
|
---
|
|
67
67
|
|
|
68
68
|
- Developed tracking algorithms for Overlord surveillance networks; supported pattern-of-life analysis for Terran outpost elimination.
|
|
@@ -70,10 +70,10 @@ subheadingRight: Char
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
CARD: experience_section
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
heading_left: Raynor's Raiders
|
|
74
|
+
heading_right: January 2018 – June 2020
|
|
75
|
+
subheading_left: Combat Engineer
|
|
76
|
+
subheading_right: Mar Sara
|
|
77
77
|
---
|
|
78
78
|
|
|
79
79
|
- Administered Hyperion shipboard systems, SCV maintenance protocols, and bunker defense automation for 30,000+ colonists.
|
|
@@ -84,18 +84,18 @@ subheadingRight: Mar Sara
|
|
|
84
84
|
---
|
|
85
85
|
CARD: experience_section
|
|
86
86
|
title: Education
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
heading_left: Carnegie Mellon University
|
|
88
|
+
heading_right: December 2025
|
|
89
|
+
subheading_left: Master of Information Technology Strategy
|
|
90
|
+
subheading_right: Pittsburgh, PA
|
|
91
91
|
---
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
CARD: experience_section
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
heading_left: United States Air Force Academy
|
|
96
|
+
heading_right: May 2024
|
|
97
|
+
subheading_left: BS, Data Science
|
|
98
|
+
subheading_right: Colorado Springs, CO
|
|
99
99
|
---
|
|
100
100
|
|
|
101
101
|
- Distinguished Graduate (top 10%); Chinese language minor (L2+/R1 on DLPT).
|
|
@@ -104,24 +104,24 @@ subheadingRight: Colorado Springs, CO
|
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
CARD: experience_section
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
heading_left: Western Governors University
|
|
108
|
+
heading_right: April 2022
|
|
109
|
+
subheading_left: BS, Cybersecurity and Information Assurance
|
|
110
|
+
subheading_right: Remote
|
|
111
111
|
---
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
CARD: experience_section
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
heading_left: Community College of the Air Force
|
|
116
|
+
heading_right: February 2019
|
|
117
|
+
subheading_left: AS, Information Systems Technology
|
|
118
|
+
subheading_right: Remote
|
|
119
119
|
---
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
CARD: experience_section
|
|
123
123
|
title: Cyber Competition
|
|
124
|
-
|
|
124
|
+
heading_left: 1st in SANS Academy Cup 2024
|
|
125
125
|
---
|
|
126
126
|
|
|
127
127
|
- Competed as the Delogrand Web Exploit SME, solving SQLi, API, and HTTP packet crafting problems.
|
|
@@ -129,7 +129,7 @@ headingLeft: 1st in SANS Academy Cup 2024
|
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
CARD: experience_section
|
|
132
|
-
|
|
132
|
+
heading_left: 1st in NCX 2023
|
|
133
133
|
---
|
|
134
134
|
|
|
135
135
|
- Developed strategies, defensive scripts, and exploits for the Cyber Combat event.
|
|
@@ -137,7 +137,7 @@ headingLeft: 1st in NCX 2023
|
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
CARD: experience_section
|
|
140
|
-
|
|
140
|
+
heading_left: 1st in SANS Academy Cup 2023
|
|
141
141
|
---
|
|
142
142
|
|
|
143
143
|
- Competed as the Delogrand Web Exploit SME, solving XSS, XXE, SQLi, and HTTP crafting problems.
|
|
@@ -145,14 +145,14 @@ headingLeft: 1st in SANS Academy Cup 2023
|
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
CARD: experience_section
|
|
148
|
-
|
|
148
|
+
heading_left: 1st in RMCS 2023
|
|
149
149
|
---
|
|
150
150
|
|
|
151
151
|
- Competed as the Delogrand Web Exploit SME, solving obfuscated JS, Wasm, XSS, and SQLi problems.
|
|
152
152
|
|
|
153
153
|
---
|
|
154
154
|
CARD: experience_section
|
|
155
|
-
|
|
155
|
+
heading_left: 1st in NCX 2022
|
|
156
156
|
---
|
|
157
157
|
|
|
158
158
|
- Trained and strategized teams for the Cyber Combat event.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/ttq-classic-resume:0.1.0": *
|
|
3
3
|
|
|
4
4
|
#show: resume
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
if card.CARD == "experience_section" {
|
|
17
17
|
timeline-entry(
|
|
18
|
-
heading-left: card.at("
|
|
19
|
-
heading-right: card.at("
|
|
20
|
-
subheading-left: card.at("
|
|
21
|
-
subheading-right: card.at("
|
|
18
|
+
heading-left: card.at("heading_left", default: ""),
|
|
19
|
+
heading-right: card.at("heading_right", default: ""),
|
|
20
|
+
subheading-left: card.at("subheading_left", default: none),
|
|
21
|
+
subheading-right: card.at("subheading_right", default: none),
|
|
22
22
|
body: card.at("BODY", default: none),
|
|
23
23
|
)
|
|
24
24
|
} else if card.CARD == "skills_section" {
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
QUILL: cmu_letter@0.1
|
|
3
|
-
department:
|
|
3
|
+
department: Department Here
|
|
4
4
|
address:
|
|
5
5
|
- 5000 Forbes Avenue
|
|
6
6
|
- Pittsburgh, PA 15213-3890
|
|
7
7
|
url: cmu.edu
|
|
8
|
-
recipient:
|
|
8
|
+
recipient:
|
|
9
9
|
- Dr. Heinz Doofenshmirtz
|
|
10
10
|
- 9297 Polly Parkway
|
|
11
11
|
- City, Virginia 46231
|
|
12
|
-
signature_block:
|
|
12
|
+
signature_block:
|
|
13
13
|
- Phineas Flynn
|
|
14
14
|
- Masters Student
|
|
15
15
|
---
|
|
16
|
-
|
|
17
|
-
Dear {:Dr. Heinz Doofenshmirtz:},
|
|
16
|
+
Dear Dr. Heinz Doofenshmirtz,
|
|
18
17
|
|
|
19
18
|
Write your letter content here. This template uses the CMU letter format for professional academic correspondence.
|
|
20
19
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-cmu-letter:0.1.0": backmatter, frontmatter, mainmatter
|
|
3
3
|
|
|
4
4
|
#show: frontmatter.with(
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
department: data.department,
|
|
7
7
|
address: data.address,
|
|
8
8
|
url: data.url,
|
|
9
|
-
date: if "date" in data
|
|
9
|
+
date: if "date" in data and data.date != none {
|
|
10
|
+
data.date
|
|
11
|
+
} else {
|
|
12
|
+
datetime.today()
|
|
13
|
+
},
|
|
10
14
|
recipient: data.recipient,
|
|
11
15
|
)
|
|
12
16
|
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
|
|
3
|
+
// `type: date` fields arrive as Typst `datetime`; overlay text must be plain strings.
|
|
4
|
+
#let show-date(v) = {
|
|
5
|
+
if v == none { "" }
|
|
6
|
+
else if type(v) == datetime { v.display("[month padding:none]/[day padding:none]/[year]") }
|
|
7
|
+
else { str(v) }
|
|
8
|
+
}
|
|
9
|
+
|
|
3
10
|
#set page(width: 8.5in, height: 11in, margin: 0in)
|
|
4
11
|
#set text(font: "Arimo", size: 10pt)
|
|
5
12
|
|
|
@@ -19,7 +26,7 @@
|
|
|
19
26
|
#check(411pt, 67pt, mode == "other")
|
|
20
27
|
|
|
21
28
|
// Fields
|
|
22
|
-
#tf(40pt, 100pt)[#data.at("departure_date", default:
|
|
29
|
+
#tf(40pt, 100pt)[#show-date(data.at("departure_date", default: none))]
|
|
23
30
|
#tf(123pt, 100pt)[#data.at("final_destination", default: "")]
|
|
24
31
|
|
|
25
32
|
// Itinerary Rows (via CARDS)
|
|
@@ -31,7 +38,7 @@
|
|
|
31
38
|
for card in data.CARDS {
|
|
32
39
|
if card.CARD == "itinerary" and row < 10 {
|
|
33
40
|
let dy = dy-start + (row * dy-step)
|
|
34
|
-
tf(80pt, dy)[#card.at("date", default:
|
|
41
|
+
tf(80pt, dy)[#show-date(card.at("date", default: none))]
|
|
35
42
|
tf(135pt, dy)[#card.at("departure_point", default: "")]
|
|
36
43
|
tf(295pt, dy)[#card.at("arrival_point", default: "")]
|
|
37
44
|
tf(450pt, dy)[#card.at("rest_length", default: "")]
|
|
@@ -56,7 +63,7 @@
|
|
|
56
63
|
|
|
57
64
|
// Acknowledgements
|
|
58
65
|
#tf(40pt, 620pt)[#data.at("organization", default: "")]
|
|
59
|
-
#tf(500pt, 620pt)[#data.at("briefed_date", default:
|
|
66
|
+
#tf(500pt, 620pt)[#show-date(data.at("briefed_date", default: none))]
|
|
60
67
|
|
|
61
68
|
#tf(40pt, 650pt)[#data.at("briefee_name", default: "")]
|
|
62
69
|
#tf(270pt, 650pt)[#data.at("briefee_grade", default: "")]
|
|
@@ -80,8 +80,7 @@ main:
|
|
|
80
80
|
|
|
81
81
|
date:
|
|
82
82
|
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
83
|
-
type:
|
|
84
|
-
default: ""
|
|
83
|
+
type: date
|
|
85
84
|
ui:
|
|
86
85
|
group: Additional
|
|
87
86
|
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
@@ -204,7 +203,7 @@ cards:
|
|
|
204
203
|
description: List of office symbols to receive copies of this endorsement.
|
|
205
204
|
date:
|
|
206
205
|
title: Date of endorsement (YYYY-MM-DD)
|
|
207
|
-
type:
|
|
206
|
+
type: date
|
|
208
207
|
ui:
|
|
209
208
|
group: Additional
|
|
210
209
|
description: Date of the endorsement. Leave blank to omit.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-usaf-memo:1.0.0": backmatter, frontmatter, indorsement, mainmatter
|
|
3
3
|
|
|
4
4
|
// Frontmatter configuration
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
letterhead_seal: image("assets/dow_seal.jpg"),
|
|
10
10
|
|
|
11
11
|
// Date
|
|
12
|
-
date:
|
|
12
|
+
date: data.at("date", default: none),
|
|
13
13
|
|
|
14
14
|
// Receiver information
|
|
15
15
|
memo_for: data.memo_for,
|
|
@@ -78,14 +78,6 @@ main:
|
|
|
78
78
|
group: Letterhead
|
|
79
79
|
description: Organizational motto at the bottom of the page.
|
|
80
80
|
|
|
81
|
-
date:
|
|
82
|
-
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
83
|
-
type: string
|
|
84
|
-
default: ""
|
|
85
|
-
ui:
|
|
86
|
-
group: Additional
|
|
87
|
-
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
88
|
-
|
|
89
81
|
references:
|
|
90
82
|
title: References for the memo
|
|
91
83
|
type: array
|
|
@@ -135,8 +127,9 @@ main:
|
|
|
135
127
|
- CONFIDENTIAL
|
|
136
128
|
ui:
|
|
137
129
|
group: Additional
|
|
130
|
+
compact: true
|
|
138
131
|
description: Follow AFI 31-401 and applicable DoD guidance for classification markings. Leave blank for unclassified.
|
|
139
|
-
|
|
132
|
+
|
|
140
133
|
font_size:
|
|
141
134
|
title: Font size for the memo text (int pt)
|
|
142
135
|
type: number
|
|
@@ -145,8 +138,18 @@ main:
|
|
|
145
138
|
- 11
|
|
146
139
|
ui:
|
|
147
140
|
group: Additional
|
|
141
|
+
compact: true
|
|
148
142
|
description: Font size for the memo text (pt).
|
|
149
143
|
|
|
144
|
+
date:
|
|
145
|
+
title: Date of memo (YYYY-MM-DD); defaults to today
|
|
146
|
+
type: date
|
|
147
|
+
default: ""
|
|
148
|
+
ui:
|
|
149
|
+
group: Additional
|
|
150
|
+
description: YYYY-MM-DD. Leave blank to use today's date.
|
|
151
|
+
|
|
152
|
+
|
|
150
153
|
cards:
|
|
151
154
|
indorsement:
|
|
152
155
|
title: Routing indorsement
|
|
@@ -214,7 +217,7 @@ cards:
|
|
|
214
217
|
description: List of office symbols to receive copies of this endorsement.
|
|
215
218
|
date:
|
|
216
219
|
title: Date of endorsement (YYYY-MM-DD)
|
|
217
|
-
type:
|
|
220
|
+
type: date
|
|
218
221
|
ui:
|
|
219
222
|
group: Additional
|
|
220
223
|
description: Date of the endorsement. Leave blank to omit.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "@local/quillmark-helper:0.1.0": data
|
|
1
|
+
#import "@local/quillmark-helper:0.1.0": data
|
|
2
2
|
#import "@local/tonguetoquill-usaf-memo:2.0.0": backmatter, frontmatter, indorsement, mainmatter
|
|
3
3
|
|
|
4
4
|
// Frontmatter configuration
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
letterhead_seal: image("assets/dow_seal.png"),
|
|
10
10
|
|
|
11
11
|
// Date
|
|
12
|
-
date:
|
|
12
|
+
date: data.at("date", default: none),
|
|
13
13
|
|
|
14
14
|
// Receiver information
|
|
15
15
|
memo_for: data.memo_for,
|
package/templates/af4141.md
CHANGED
|
@@ -21,7 +21,7 @@ In the data above, edit:
|
|
|
21
21
|
- Signature block
|
|
22
22
|
-->
|
|
23
23
|
|
|
24
|
-
Dear
|
|
24
|
+
Dear Dr. Heinz Doofenshmirtz,
|
|
25
25
|
|
|
26
26
|
Write your letter content here. This template uses the CMU letter format for professional academic correspondence.
|
|
27
27
|
|
|
@@ -35,4 +35,4 @@ Use additional paragraphs to develop your ideas fully and maintain clear communi
|
|
|
35
35
|
|
|
36
36
|
You can also **bold**, _italicize_, __underline__, `code`, and ~~strikethrough~~ your text as needed.
|
|
37
37
|
|
|
38
|
-
Sincerely,
|
|
38
|
+
Sincerely,
|
package/templates/loc.md
CHANGED
|
@@ -21,14 +21,12 @@ compress_indorsements: true
|
|
|
21
21
|
# Based on LOCAR template from https://www.shaw.af.mil/Portals/98/Docs/Legal/Revamp/2022%20LOCAR%20TEMPLATE%20(Enlisted).docx
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
**NOTE: This template is undergoing major refinement. It is included for demonstration purposes.**
|
|
25
|
-
|
|
26
24
|
<!-- EDIT: Describe the incident: what the member did or failed to do, citing specific incidents and dates, and if possible, with UCMJ articles. -->
|
|
27
|
-
Investigation has disclosed
|
|
25
|
+
Investigation has disclosed that on 8 March 2026, you failed to report to 0730 formation as directed and did not notify your supervisor until 0815.
|
|
28
26
|
|
|
29
27
|
<!-- EDIT: Counseling paragraph: Discuss the impact of the member's actions and what improvement is expected. -->
|
|
30
28
|
You are hereby counseled.
|
|
31
|
-
|
|
29
|
+
Your actions disrupted accountability procedures and delayed mission tasking for your section. You are expected to report on time for all formations and immediately notify your chain of command if an emergency prevents timely reporting.
|
|
32
30
|
Your conduct is unacceptable and any future misconduct may result in more severe action.
|
|
33
31
|
|
|
34
32
|
The following information required by the Privacy Act is provided for your information. **AUTHORITY**: 10 U.S.C. § 8013. **PURPOSE**: To obtain any comments or documents you desire to submit (on a voluntary basis) for consideration concerning this action. **ROUTINE USES**: Provides you an opportunity to submit comments or documents for consideration. If provided, the comments and documents you submit become a part of the action. **DISCLOSURE**: Your written acknowledgement of receipt and signature are mandatory. Any other comments or documents you provide are voluntary.
|
|
@@ -43,7 +41,7 @@ signature_block: SUBJECT FIRST M. LAST, RANK, USAF
|
|
|
43
41
|
---
|
|
44
42
|
|
|
45
43
|
<!-- EDIT: First Indorsement: Subject acknowledges receipt of the LOC -->
|
|
46
|
-
I acknowledge receipt and understanding of this letter on
|
|
44
|
+
I acknowledge receipt and understanding of this letter on 10 March 2026 at 1430. I understand that I have 3 duty days from the date I received this letter to provide a response and that I must include in my response any comments or documents I wish to be considered concerning this Letter of Counseling.
|
|
47
45
|
|
|
48
46
|
---
|
|
49
47
|
CARD: indorsement
|
|
@@ -76,4 +74,4 @@ date: "Date: _____________"
|
|
|
76
74
|
---
|
|
77
75
|
|
|
78
76
|
<!-- EDIT: Fourth Indorsement: Subject acknowledges final decision -->
|
|
79
|
-
I acknowledge receipt of the final decision regarding disposition of this Letter of Counseling on
|
|
77
|
+
I acknowledge receipt of the final decision regarding disposition of this Letter of Counseling on 14 March 2026 at 0930.
|
|
@@ -6,12 +6,12 @@ letterhead_caption:
|
|
|
6
6
|
- UNIVERSITY OF PITTSBURGH, PA
|
|
7
7
|
memo_for:
|
|
8
8
|
- AFROTC DET 730/CC
|
|
9
|
-
memo_from:
|
|
9
|
+
memo_from:
|
|
10
10
|
- 2d Lt First M. Last
|
|
11
|
-
subject:
|
|
11
|
+
subject: 15 May 2026 – 18 May 2026, Special Pass Request
|
|
12
12
|
references:
|
|
13
13
|
- DAFI 36-3003, 07 August 2024, Military Leave Program
|
|
14
|
-
signature_block:
|
|
14
|
+
signature_block:
|
|
15
15
|
- FIRST M. LAST, 2d Lt, USAF
|
|
16
16
|
- AFIT Masters Student
|
|
17
17
|
font_size: 11
|
|
@@ -22,18 +22,18 @@ In the data above, edit;
|
|
|
22
22
|
- Signature Block
|
|
23
23
|
- Subject
|
|
24
24
|
---------------->
|
|
25
|
-
**PURPOSE:** The purpose of the memorandum is to request a 4-day pass, in accordance with DAFI 36-3003, for traveling to
|
|
25
|
+
**PURPOSE:** The purpose of the memorandum is to request a 4-day pass, in accordance with DAFI 36-3003, for traveling to Columbus, Ohio to visit family.
|
|
26
26
|
|
|
27
27
|
<!-------------
|
|
28
28
|
In Narrative section below, edit:
|
|
29
29
|
- Flight and transit details
|
|
30
30
|
- Document completion of AF4392 if age 25 or under
|
|
31
31
|
--------------->
|
|
32
|
-
**NARRATIVE:** On
|
|
32
|
+
**NARRATIVE:** On 15 May 2026, depart via UA2424 at 0240 ET. On 18 May 2026, return via UA1234 at 1300 ET. Transit to and from PIT with POV. I do not need to complete AF4392 to comply with travel risk requirements because I am not under the age of 26.
|
|
33
33
|
|
|
34
34
|
**REFERENCED REGULATION:** “5.3. Special Pass. Unit commanders may award 3 or 4-day special passes for special occasions or circumstances, such as reenlistment or for some type of special recognition or compensatory time off. They may delegate approval to a level no lower than squadron section commander, deputies, or equivalents. (T-1) Special passes start after normal working hours on a given day. They stop at the beginning of normal working hours on either the 4th day for a 3 -day special pass or the 5th day for a 4-day special pass. A 3-day special pass can be Friday through Sunday, Saturday through Monday, or Tuesday through Thursday. A 4-day special pass can be Thursday through Sunday or Saturday through Tuesday or Friday through Monday. This applies to a normal Monday through Friday workweek. See paragraph 2.1.2 for safe travel guidelines.”
|
|
35
35
|
|
|
36
|
-
If you have any questions, please contact me at
|
|
36
|
+
If you have any questions, please contact me at first.last@us.af.mil or (123) 456-7890.
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
CARD: indorsement
|
|
@@ -41,4 +41,4 @@ signature_block:
|
|
|
41
41
|
- ROBERT T. CHANCE, Lt Col, USAF
|
|
42
42
|
- Commander
|
|
43
43
|
format: informal
|
|
44
|
-
---
|
|
44
|
+
---
|
package/templates/rebuttal.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
QUILL: usaf_memo@0.2
|
|
3
3
|
letterhead_title: DEPARTMENT OF THE AIR FORCE
|
|
4
|
-
letterhead_caption:
|
|
4
|
+
letterhead_caption:
|
|
5
5
|
- YOUR SQUADRON HERE
|
|
6
6
|
- USAF BASE, STATE
|
|
7
|
-
memo_for:
|
|
7
|
+
memo_for:
|
|
8
8
|
- Issuer's Rank FIRST M. LAST, USAF
|
|
9
|
-
memo_from:
|
|
9
|
+
memo_from:
|
|
10
10
|
- Subject's ORG/SYMBOL
|
|
11
|
-
subject:
|
|
12
|
-
signature_block:
|
|
11
|
+
subject: Response to Letter of Counseling, Late Arrival to Formation, dated 10 March 2026
|
|
12
|
+
signature_block:
|
|
13
13
|
- Subject's FIRST M. LAST, Rank, USAF
|
|
14
14
|
- Duty Title
|
|
15
15
|
---
|
|
@@ -19,7 +19,7 @@ signature_block: !fill
|
|
|
19
19
|
- State the date and subject matter clearly
|
|
20
20
|
- Express intent to respond professionally
|
|
21
21
|
------------------------------------------------------>
|
|
22
|
-
I received the Letter of Counseling dated
|
|
22
|
+
I received the Letter of Counseling dated 10 March 2026 regarding my late arrival to formation on 8 March 2026. I respectfully submit this response for your consideration.
|
|
23
23
|
|
|
24
24
|
<!-----------------------------------------------------
|
|
25
25
|
2. RESPONSE TO ALLEGATIONS
|
|
@@ -53,4 +53,4 @@ I have taken immediate corrective action to prevent recurrence. I have adjusted
|
|
|
53
53
|
- Articulate potential career impacts (promotion eligibility, security clearance, reenlistment)
|
|
54
54
|
- Reaffirm commitment to Air Force standards and continued service excellence
|
|
55
55
|
------------------------------------------------------>
|
|
56
|
-
Based on my sustained performance record and the comprehensive corrective actions implemented, I respectfully request for this letter to not be filed in my Personnel Information File. Filing could adversely impact my promotion eligibility and future career opportunities. This isolated incident does not accurately reflect my dedication to the Air Force or my commitment to upholding the highest standards of conduct and professionalism. I am determined to continue serving with distinction and contributing meaningfully to the mission. Thank you for your consideration.
|
|
56
|
+
Based on my sustained performance record and the comprehensive corrective actions implemented, I respectfully request for this letter to not be filed in my Personnel Information File. Filing could adversely impact my promotion eligibility and future career opportunities. This isolated incident does not accurately reflect my dedication to the Air Force or my commitment to upholding the highest standards of conduct and professionalism. I am determined to continue serving with distinction and contributing meaningfully to the mission. Thank you for your consideration.
|
package/templates/templates.json
CHANGED
|
@@ -27,13 +27,6 @@
|
|
|
27
27
|
"file": "rebuttal.md",
|
|
28
28
|
"production": true
|
|
29
29
|
},
|
|
30
|
-
{
|
|
31
|
-
"id": "taro-template",
|
|
32
|
-
"name": "Taro Template",
|
|
33
|
-
"description": "Official Taro ice cream template",
|
|
34
|
-
"file": "taro.md",
|
|
35
|
-
"production": false
|
|
36
|
-
},
|
|
37
30
|
{
|
|
38
31
|
"id": "cmu-letter",
|
|
39
32
|
"name": "CMU Letter",
|