create-jant 0.3.39 → 0.3.42

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 (57) hide show
  1. package/README.md +49 -62
  2. package/dist/index.js +19 -1
  3. package/package.json +4 -4
  4. package/template/.agents/skills/building-jant-site/SKILL.md +101 -0
  5. package/template/.agents/skills/jant-http-api/SKILL.md +195 -0
  6. package/template/.agents/skills/jant-site-ops/SKILL.md +88 -0
  7. package/template/AGENTS.md +65 -0
  8. package/template/README.md +86 -159
  9. package/template/_github/workflows/deploy.yml +34 -0
  10. package/template/examples/agent-content-automation/README.md +92 -0
  11. package/template/examples/agent-content-automation/note.json +7 -0
  12. package/template/examples/agent-content-automation/quote.json +9 -0
  13. package/template/examples/agent-content-automation/site-settings.json +5 -0
  14. package/template/package.json +1 -1
  15. package/template/wrangler.toml +1 -1
  16. package/template/docs/internal/migrate.md +0 -10
  17. package/template/docs/internal/operations.md +0 -61
  18. package/template/static-site-export/README.md +0 -70
  19. package/template/static-site-export/config.toml +0 -16
  20. package/template/static-site-export/content/41q27/index.md +0 -29
  21. package/template/static-site-export/content/_index.md +0 -4
  22. package/template/static-site-export/content/a-night-heron-field-guide-for-my-walk-folder/index.md +0 -16
  23. package/template/static-site-export/content/a-quiet-saturday-after-a-busy-week/index.md +0 -23
  24. package/template/static-site-export/content/are-na-is-the-only-bookmark-pile-i-still-revisit/index.md +0 -16
  25. package/template/static-site-export/content/bought-too-many-lemons-again/index.md +0 -15
  26. package/template/static-site-export/content/current-tea-rotation/index.md +0 -20
  27. package/template/static-site-export/content/derek-sivers-still-writes-the-kind-of-internet-i-want-more-of/index.md +0 -16
  28. package/template/static-site-export/content/desk-but-better/index.md +0 -16
  29. package/template/static-site-export/content/e0kcg/index.md +0 -12
  30. package/template/static-site-export/content/from-basho/index.md +0 -15
  31. package/template/static-site-export/content/from-epictetus/index.md +0 -15
  32. package/template/static-site-export/content/from-marcus-aurelius/index.md +0 -15
  33. package/template/static-site-export/content/from-seneca/index.md +0 -15
  34. package/template/static-site-export/content/from-thoreau/index.md +0 -15
  35. package/template/static-site-export/content/gkbvv/index.md +0 -28
  36. package/template/static-site-export/content/k5vh8/index.md +0 -29
  37. package/template/static-site-export/content/mynoise-for-rainy-afternoons/index.md +0 -16
  38. package/template/static-site-export/content/nts-archives-are-good-cleaning-music/index.md +0 -16
  39. package/template/static-site-export/content/qgfcu/index.md +0 -29
  40. package/template/static-site-export/content/rain-makes-my-neighborhood-look-better/index.md +0 -17
  41. package/template/static-site-export/content/serious-eats-on-tomato-and-egg-soup/index.md +0 -16
  42. package/template/static-site-export/content/te812/index.md +0 -29
  43. package/template/static-site-export/content/telk3/index.md +0 -29
  44. package/template/static-site-export/content/the-five-minute-reset-is-still-the-best-habit-i-have/index.md +0 -21
  45. package/template/static-site-export/content/the-hallway-light-took-12-minutes-and-3-months/index.md +0 -18
  46. package/template/static-site-export/content/the-recurse-center-manual-is-weirdly-calming/index.md +0 -16
  47. package/template/static-site-export/content/u08bn/index.md +0 -29
  48. package/template/static-site-export/content/what-i-actually-use-my-notebook-for/index.md +0 -23
  49. package/template/static-site-export/content/z4s9v/index.md +0 -29
  50. package/template/static-site-export/static/style.css +0 -338
  51. package/template/static-site-export/templates/base.html +0 -23
  52. package/template/static-site-export/templates/index.html +0 -20
  53. package/template/static-site-export/templates/macros.html +0 -58
  54. package/template/static-site-export/templates/page.html +0 -8
  55. package/template/static-site-export/templates/section.html +0 -17
  56. package/template/static-site-export/templates/taxonomy_list.html +0 -15
  57. package/template/static-site-export/templates/taxonomy_single.html +0 -13
@@ -1,338 +0,0 @@
1
- /* Jant Export Theme — Organic Minimalism */
2
-
3
- :root {
4
- --site-width: 500px;
5
- --font-body:
6
- system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
7
- "Helvetica Neue", Helvetica, Arial, sans-serif;
8
- --font-mono: ui-monospace, Menlo, Monaco, Consolas, "Courier New", monospace;
9
-
10
- --bg: #fafaf9;
11
- --fg: #1c1917;
12
- --muted: #78716c;
13
- --border: #e7e5e4;
14
- --accent: #292524;
15
- --accent-fg: #fff;
16
- --card-bg: #fff;
17
- --quote-border: #d6d3d1;
18
- --star-color: #f59e0b;
19
- --link-color: #292524;
20
- }
21
-
22
- @media (prefers-color-scheme: dark) {
23
- :root {
24
- --bg: #1c1917;
25
- --fg: #e7e5e4;
26
- --muted: #a8a29e;
27
- --border: #44403c;
28
- --accent: #e7e5e4;
29
- --accent-fg: #1c1917;
30
- --card-bg: #292524;
31
- --quote-border: #57534e;
32
- --star-color: #fbbf24;
33
- --link-color: #e7e5e4;
34
- }
35
- }
36
-
37
- *,
38
- *::before,
39
- *::after {
40
- box-sizing: border-box;
41
- margin: 0;
42
- padding: 0;
43
- }
44
-
45
- html {
46
- font-size: 15px;
47
- line-height: 1.5;
48
- }
49
-
50
- body {
51
- font-family: var(--font-body);
52
- color: var(--fg);
53
- background: var(--bg);
54
- max-width: var(--site-width);
55
- margin: 0 auto;
56
- padding: 2rem 1.5rem;
57
- }
58
-
59
- a {
60
- color: var(--link-color);
61
- text-decoration-thickness: 1px;
62
- text-underline-offset: 2px;
63
- }
64
-
65
- a:hover {
66
- text-decoration: none;
67
- }
68
-
69
- /* Header */
70
- .site-header {
71
- display: flex;
72
- align-items: center;
73
- justify-content: space-between;
74
- padding-bottom: 2rem;
75
- border-bottom: 1px solid var(--border);
76
- margin-bottom: 2rem;
77
- }
78
-
79
- .site-title {
80
- font-weight: 700;
81
- font-size: 1.125rem;
82
- text-decoration: none;
83
- color: var(--fg);
84
- }
85
-
86
- .site-header nav {
87
- display: flex;
88
- gap: 1rem;
89
- }
90
-
91
- .site-header nav a {
92
- color: var(--muted);
93
- text-decoration: none;
94
- font-size: 0.875rem;
95
- }
96
-
97
- .site-header nav a:hover {
98
- color: var(--fg);
99
- }
100
-
101
- /* Post list */
102
- .post-list {
103
- display: flex;
104
- flex-direction: column;
105
- }
106
-
107
- .post-card {
108
- padding: 1.25rem 0;
109
- border-bottom: 1px solid var(--border);
110
- }
111
-
112
- .post-card:last-child {
113
- border-bottom: none;
114
- }
115
-
116
- .post-title {
117
- font-size: 1.0625rem;
118
- font-weight: 600;
119
- margin-bottom: 0.25rem;
120
- line-height: 1.4;
121
- }
122
-
123
- .post-title a {
124
- text-decoration: none;
125
- color: var(--fg);
126
- }
127
-
128
- .post-title a:hover {
129
- text-decoration: underline;
130
- }
131
-
132
- /* Link format domain indicator */
133
- .link-domain {
134
- font-size: 0.8125rem;
135
- color: var(--muted);
136
- margin-bottom: 0.25rem;
137
- }
138
-
139
- .link-domain a {
140
- color: var(--muted);
141
- text-decoration: none;
142
- }
143
-
144
- /* Quote format */
145
- .feed-quote {
146
- border-left: 2px solid var(--quote-border);
147
- padding-left: 1rem;
148
- margin: 0.5rem 0;
149
- font-style: italic;
150
- color: var(--fg);
151
- }
152
-
153
- /* Body / prose */
154
- .post-body {
155
- font-size: 0.9375rem;
156
- line-height: 1.6;
157
- color: var(--fg);
158
- }
159
-
160
- .post-body p {
161
- margin: 0.75rem 0;
162
- }
163
-
164
- .post-body p:first-child {
165
- margin-top: 0;
166
- }
167
-
168
- .post-body img {
169
- max-width: 100%;
170
- height: auto;
171
- border-radius: 0.5rem;
172
- }
173
-
174
- .post-body pre {
175
- background: var(--card-bg);
176
- border: 1px solid var(--border);
177
- border-radius: 0.375rem;
178
- padding: 0.75rem 1rem;
179
- overflow-x: auto;
180
- font-family: var(--font-mono);
181
- font-size: 0.8125rem;
182
- line-height: 1.5;
183
- }
184
-
185
- .post-body code {
186
- font-family: var(--font-mono);
187
- font-size: 0.875em;
188
- background: var(--card-bg);
189
- padding: 0.125rem 0.375rem;
190
- border-radius: 0.25rem;
191
- }
192
-
193
- .post-body pre code {
194
- background: none;
195
- padding: 0;
196
- }
197
-
198
- .post-body blockquote {
199
- border-left: 2px solid var(--quote-border);
200
- padding-left: 1rem;
201
- color: var(--muted);
202
- margin: 0.75rem 0;
203
- }
204
-
205
- .post-body h1,
206
- .post-body h2,
207
- .post-body h3,
208
- .post-body h4,
209
- .post-body h5,
210
- .post-body h6 {
211
- margin: 1.5rem 0 0.5rem;
212
- line-height: 1.3;
213
- }
214
-
215
- .post-body ul,
216
- .post-body ol {
217
- padding-left: 1.5rem;
218
- margin: 0.75rem 0;
219
- }
220
-
221
- .post-body table {
222
- width: 100%;
223
- border-collapse: collapse;
224
- margin: 0.75rem 0;
225
- font-size: 0.875rem;
226
- }
227
-
228
- .post-body th,
229
- .post-body td {
230
- border: 1px solid var(--border);
231
- padding: 0.375rem 0.75rem;
232
- text-align: left;
233
- }
234
-
235
- .post-body th {
236
- font-weight: 600;
237
- background: var(--card-bg);
238
- }
239
-
240
- /* Star rating */
241
- .star-rating {
242
- margin: 0.25rem 0;
243
- font-size: 0.875rem;
244
- }
245
-
246
- .star-rating .star {
247
- color: var(--border);
248
- }
249
-
250
- .star-rating .star.filled {
251
- color: var(--star-color);
252
- }
253
-
254
- /* Post footer */
255
- .post-footer {
256
- display: flex;
257
- align-items: center;
258
- gap: 0.75rem;
259
- margin-top: 0.5rem;
260
- font-size: 0.8125rem;
261
- color: var(--muted);
262
- }
263
-
264
- .post-date {
265
- color: var(--muted);
266
- text-decoration: none;
267
- }
268
-
269
- .post-date:hover {
270
- color: var(--fg);
271
- }
272
-
273
- .collection-tag {
274
- color: var(--muted);
275
- text-decoration: none;
276
- font-size: 0.75rem;
277
- border: 1px solid var(--border);
278
- padding: 0.0625rem 0.375rem;
279
- border-radius: 999px;
280
- }
281
-
282
- .collection-tag:hover {
283
- color: var(--fg);
284
- border-color: var(--fg);
285
- }
286
-
287
- /* Detail page */
288
- .post-detail {
289
- padding: 1rem 0;
290
- }
291
-
292
- .post-detail .post-title {
293
- font-size: 1.25rem;
294
- margin-bottom: 0.5rem;
295
- }
296
-
297
- .post-detail .post-body {
298
- margin: 1rem 0;
299
- }
300
-
301
- /* Section / Collection */
302
- .section-description {
303
- color: var(--muted);
304
- margin-bottom: 1.5rem;
305
- }
306
-
307
- .collection-list {
308
- list-style: none;
309
- padding: 0;
310
- }
311
-
312
- .collection-list li {
313
- padding: 0.5rem 0;
314
- border-bottom: 1px solid var(--border);
315
- }
316
-
317
- .collection-list .count {
318
- color: var(--muted);
319
- font-size: 0.8125rem;
320
- }
321
-
322
- /* Pagination */
323
- .pagination {
324
- display: flex;
325
- justify-content: space-between;
326
- padding: 2rem 0 1rem;
327
- font-size: 0.875rem;
328
- }
329
-
330
- /* Footer */
331
- .site-footer {
332
- margin-top: 3rem;
333
- padding-top: 1rem;
334
- border-top: 1px solid var(--border);
335
- text-align: center;
336
- font-size: 0.8125rem;
337
- color: var(--muted);
338
- }
@@ -1,23 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="{{ config.default_language }}">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>{% block title %}{{ config.title }}{% endblock %}</title>
7
- <meta name="description" content="{{ config.description }}">
8
- <link rel="stylesheet" href="{{ get_url(path='style.css') }}">
9
- <link rel="alternate" type="application/atom+xml" title="{{ config.title }}" href="{{ get_url(path='atom.xml') }}">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <a href="{{ config.base_url }}" class="site-title">{{ config.title }}</a>
14
- <nav>
15
- <a href="{{ config.base_url }}/c/">Collections</a>
16
- <a href="{{ get_url(path='atom.xml') }}">RSS</a>
17
- </nav>
18
- </header>
19
- <main class="site-main">
20
- {% block content %}{% endblock %}
21
- </main>
22
- </body>
23
- </html>
@@ -1,20 +0,0 @@
1
- {% extends "base.html" %}
2
- {% import "macros.html" as macros %}
3
-
4
- {% block title %}{{ config.title }}{% endblock %}
5
-
6
- {% block content %}
7
- <div class="post-list">
8
- {% for page in paginator.pages %}
9
- {{ macros::post_card(page=page) }}
10
- {% endfor %}
11
- </div>
12
-
13
- {% if paginator.previous or paginator.next %}
14
- <nav class="pagination">
15
- {% if paginator.previous %}<a href="{{ paginator.previous }}">&larr; Newer</a>{% endif %}
16
- {% if paginator.next %}<a href="{{ paginator.next }}">Older &rarr;</a>{% endif %}
17
- </nav>
18
- {% endif %}
19
-
20
- {% endblock %}
@@ -1,58 +0,0 @@
1
- {% macro post_card(page, detail=false) %}
2
- <article class="{% if detail %}post-detail{% else %}post-card{% endif %}{% if page.extra.pinned %} pinned{% endif %}" data-format="{{ page.extra.format | default(value='note') }}">
3
- {% if page.extra.format == "link" and page.extra.link_url %}
4
- <div class="post-meta link-domain">
5
- <a href="{{ page.extra.link_url }}" rel="noopener noreferrer" target="_blank">{{ page.extra.link_url | split(pat="//") | nth(n=1) | split(pat="/") | first }}</a>
6
- </div>
7
- {% endif %}
8
-
9
- {% if page.title %}
10
- {% if detail %}
11
- <h1 class="post-title">
12
- {% if page.extra.format == "link" and page.extra.link_url %}
13
- <a href="{{ page.extra.link_url }}" rel="noopener noreferrer" target="_blank">{{ page.title }}</a>
14
- {% else %}
15
- {{ page.title }}
16
- {% endif %}
17
- </h1>
18
- {% else %}
19
- <h2 class="post-title">
20
- {% if page.extra.format == "link" and page.extra.link_url %}
21
- <a href="{{ page.extra.link_url }}" rel="noopener noreferrer" target="_blank">{{ page.title }}</a>
22
- {% else %}
23
- <a href="{{ page.permalink }}">{{ page.title }}</a>
24
- {% endif %}
25
- </h2>
26
- {% endif %}
27
- {% endif %}
28
-
29
- {% if page.extra.format == "quote" and page.extra.quote_text %}
30
- <blockquote class="feed-quote">
31
- <p>{{ page.extra.quote_text }}</p>
32
- </blockquote>
33
- {% endif %}
34
-
35
- {% if not detail and page.summary %}
36
- <div class="post-body prose">{{ page.summary | safe }}</div>
37
- {% elif page.content %}
38
- <div class="post-body prose">{{ page.content | safe }}</div>
39
- {% endif %}
40
-
41
- {% if page.extra.rating %}
42
- <div class="star-rating">
43
- {% for i in range(end=page.extra.rating) %}<span class="star filled">&#9733;</span>{% endfor %}{% for i in range(start=page.extra.rating, end=5) %}<span class="star">&#9734;</span>{% endfor %}
44
- </div>
45
- {% endif %}
46
-
47
- <footer class="post-footer">
48
- <a href="{{ page.permalink }}" class="post-date"><time datetime="{{ page.date }}">{{ page.date | date(format="%b %e, %Y") }}</time></a>
49
- {% if page.taxonomies.c %}
50
- <span class="post-collections">
51
- {% for col in page.taxonomies.c %}
52
- <a href="{{ get_taxonomy_url(kind='c', name=col) }}" class="collection-tag">{{ col }}</a>
53
- {% endfor %}
54
- </span>
55
- {% endif %}
56
- </footer>
57
- </article>
58
- {% endmacro %}
@@ -1,8 +0,0 @@
1
- {% extends "base.html" %}
2
- {% import "macros.html" as macros %}
3
-
4
- {% block title %}{% if page.title %}{{ page.title }} &mdash; {% endif %}{{ config.title }}{% endblock %}
5
-
6
- {% block content %}
7
- {{ macros::post_card(page=page, detail=true) }}
8
- {% endblock %}
@@ -1,17 +0,0 @@
1
- {% extends "base.html" %}
2
- {% import "macros.html" as macros %}
3
-
4
- {% block title %}{{ section.title }} &mdash; {{ config.title }}{% endblock %}
5
-
6
- {% block content %}
7
- <h1>{{ section.title }}</h1>
8
- {% if section.description %}
9
- <p class="section-description">{{ section.description }}</p>
10
- {% endif %}
11
-
12
- <div class="post-list">
13
- {% for page in section.pages %}
14
- {{ macros::post_card(page=page) }}
15
- {% endfor %}
16
- </div>
17
- {% endblock %}
@@ -1,15 +0,0 @@
1
- {% extends "base.html" %}
2
-
3
- {% block title %}Collections &mdash; {{ config.title }}{% endblock %}
4
-
5
- {% block content %}
6
- <h1>Collections</h1>
7
- <ul class="collection-list">
8
- {% for term in terms %}
9
- <li>
10
- <a href="{{ term.permalink }}">{{ term.name }}</a>
11
- <span class="count">({{ term.pages | length }})</span>
12
- </li>
13
- {% endfor %}
14
- </ul>
15
- {% endblock %}
@@ -1,13 +0,0 @@
1
- {% extends "base.html" %}
2
- {% import "macros.html" as macros %}
3
-
4
- {% block title %}{{ term.name }} &mdash; {{ config.title }}{% endblock %}
5
-
6
- {% block content %}
7
- <h1>{{ term.name }}</h1>
8
- <div class="post-list">
9
- {% for page in term.pages %}
10
- {{ macros::post_card(page=page) }}
11
- {% endfor %}
12
- </div>
13
- {% endblock %}