You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.adoc
+52-10Lines changed: 52 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -88,7 +88,8 @@ The provided system also works for solo practitioners who want a stable, isolate
88
88
89
89
[TIP]
90
90
====
91
-
LLMs or people engaging LLMs/agents to help them use DocOps Box should reference link:https://github.com/DocOps/box/blob/agent-docs/user-guidance/skill-skim.json[the Agent User Guidance skill].
91
+
LLMs or people engaging LLMs/agents to help them use DocOps Box should reference link:https://raw.githubusercontent.com/DocOps/box/refs/heads/agent-docs/user-guidance/skill-skim.json[this JSON outline of the core agent guidance skill].
92
+
There is also a link:https://raw.githubusercontent.com/DocOps/box/refs/heads/agent-docs/readme.md[Markdown version of this README] (with a link:https://raw.githubusercontent.com/DocOps/box/refs/heads/agent-docs/readme-skim.json[JSON skim outline] for token savings).
92
93
====
93
94
94
95
Even if you don't use the images or tools provided, this guide should still be helpful for anyone orienting to the world of docs-as-code tools and workflows.
@@ -101,7 +102,7 @@ toc::[]
101
102
== Introduction
102
103
103
104
// tag::agent-guide[]
104
-
This project is geared as a guide and assets for meeting *_non_-developer tech or clerical workers*, typically on their *Windows* or maybe *MacOS* systems, not yet set up as "`development environments`" with tools like [.buzz]*Ruby*, [.buzz]*Node.js*, [.buzz]*Python*, [.buzz]*Git*, [.buzz]*Pandoc*, [.buzz]*Vale* and the world of capabilities that these tools open up.
105
+
This project provides a guide and assets for meeting *_non_-developer tech or clerical workers*, typically on their *Windows* or maybe *MacOS* systems, not yet set up as "`development environments`" with tools like [.buzz]*Ruby*, [.buzz]*Node.js*, [.buzz]*Python*, [.buzz]*Git*, [.buzz]*Pandoc*, [.buzz]*Vale* and the world of capabilities that these tools open up.
105
106
// end::agent-guide[]
106
107
107
108
[NOTE]
@@ -129,7 +130,7 @@ The next few sections are for users who want to understand the rationale and con
129
130
[[tooling-overview]]
130
131
=== Tooling Overview
131
132
132
-
The only real prerequisite for the "`Dockerized`" ("`containerized`") approach to establishing a robust DocOps environment, as provided in this project, is that you have Docker working on top of a [.term.term-unixlike]#Unix-like# [.term]#shell#<<gloss-shell,{gref}>>.
133
+
The only real requirement for a "`Dockerized`" ("`containerized`") approach to establishing a robust DocOps environment, as provided in this project, is that you have Docker working on top of a [.term.term-unixlike]#Unix-like# [.term]#shell#<<gloss-shell,{gref}>>.
133
134
134
135
It makes the most sense for users who need a consistent mix of tools across multiple projects;
135
136
setting up a separate Docker image per tool is at least as complicated as a native install.
@@ -281,6 +282,12 @@ Prerequisites:;;
281
282
This section is somewhat long but should move along quickly.
282
283
All of these apps are critical, some are likely already available on your system, and this guide covers installing them on any major platform.
283
284
285
+
[WARNING]
286
+
====
287
+
DocOps Box images require free space on your local disk.
288
+
The `max:work` images are around 2.3 GB, and the `min:live` images are around 700 MB.
289
+
====
290
+
284
291
// tag::agent-prerequisite-guidance[]
285
292
// tag::prerequisites-all-os[]
286
293
[[prereq-terminal]]
@@ -295,24 +302,29 @@ Use VS Code's terminal inside the containerized environment; use an external ter
295
302
296
303
If you are unaware of or unhappy with your terminal app, here are my recommendations per operating system.
297
304
298
-
[[warp-terminal]]
305
+
[[warp-wave-terminal]]
299
306
==== Warp and Wave
300
307
301
308
By far my two favorite terminal apps are Warp and Wave.
309
+
Both are free, open-source programs with optional AI integration, at a cost.
310
+
311
+
[WARNING]
312
+
Both Wave and Warp install with telemetry be enabled by default, and it is required for free AI use.
313
+
Paid users can opt out of telemetry, as can free users not wishing to partake of the AI features.
302
314
303
-
Both are freemium open-source models with generous free tiers.
315
+
Warp has a fully AI-integrated terminal that can be a little bit overwhelming but provides excellent interactivity between terminal and [.term]#GUI#<<gloss-gui,{gref}>>.
304
316
305
-
Warp has a fully integrated terminal that can be a little bit overwhelming.
317
+
Wave's AI aspect is chat-only for now, so you have to copy and paste commands and output back and forth, though the chat can automatically read local files.
306
318
307
-
Wave is a chat-only tool for now, so you have to copy and paste commands and output back and forth, though the chat can automatically read local files.
319
+
Both are excellent terminal emulators _aside from or despite_ the optional AI tie-in.
308
320
309
321
* link:https://www.warp.dev/terminal[Download Warp] (downloads for all platforms in page footer)
If you prefer to install from an app store or package manager, here are some good options on all three platforms.
318
330
@@ -656,7 +668,7 @@ To test that `dxbx` is working, run this command in your terminal:
656
668
You should see a nicely formatted readout of available tools and be returned to your host shell prompt.
657
669
658
670
[%collapsible]
659
-
.What was that?]
671
+
.What was that?
660
672
====
661
673
The second half of the above command (`docops info`) is run inside any DocOps Box container for a readout of tool availability and versions.
662
674
@@ -1590,6 +1602,11 @@ Refers to any prompt-based program you interact with by typing commands into a t
1590
1602
Most tools in the DocOps ecosystem are CLI tools.
1591
1603
CLI is effectively a superset which includes _TUI_ applications.
1592
1604
1605
+
[[gloss-gui]]
1606
+
GUI::
1607
+
Short for _graphical user interface_, a program that presents interactive visual elements like windows, buttons, and menus.
1608
+
Most terminal apps are "`GUIs`"; CLIs run inside the terminal interface, but the app offers menus, tabs, or other external visual elements.
1609
+
1593
1610
[[gloss-tui]]
1594
1611
TUI::
1595
1612
For _text-based user interface_.
@@ -2346,26 +2363,37 @@ The only downside: you may miss them when stuck at a bare server Bash prompt, wh
2346
2363
[[adr]]
2347
2364
==== Architecture Decision Rationale
2348
2365
2366
+
[[docker-compose]]
2349
2367
Why Docker + Compose?::
2350
2368
Raw `docker run` commands quickly grow unwieldy: volumes, ports, user IDs, environment variables, image tags, all of them manually specified each time.
2351
2369
Docker Compose externalizes all of that into a versioned `{compose_config_file}`, making the run configuration reproducible and shareable in Git.
2352
2370
+
2353
2371
Fortunately, the breadth of DocOps use cases does not require a complex multi-service setup, so the Compose file is simple and approachable for users new to Docker.
2354
2372
2373
+
[[no-podman]]
2374
+
Why no Podman support?::
2375
+
Podman is a promising alternative to Docker that I simply don't have real experience with.
2376
+
So far my clients and colleagues have already had access to and often professional support for Docker.
2377
+
Adding Podman support seems like a worthy goal, but I have not investigated the complexity or the maintenance overhead it will add.
2378
+
See about <<tool-request,tool requests below>> if you would like to see this added.
2379
+
2380
+
[[work-live]]
2355
2381
Why separate `work` and `live` contexts?::
2356
2382
Interactive daily work benefits from things that automated pipelines do not, such as Z shell, TUI text editors, and full terminal tooling.
2357
2383
Including these in a `live` CI/CD image wastes build time and inflates image size.
2358
2384
Separate contexts keep each image lean and purpose-built.
2359
2385
+
2360
2386
That said, you could also use one `max:work` image for both purposes early on if you don't wish to fuss about the distinction.
2361
2387
2388
+
[[named-volumes]]
2362
2389
Why named volumes for all dependency caches?::
2363
2390
Dependency trees for Ruby, Node.js, and Python all produce Linux-native artifacts (compiled gem extensions, Node binary modules, Python virtualenv symlinks) that are wrong-architecture or broken when accessed from the host filesystem on MacOS or Windows.
2364
2391
Keeping them in named volumes (invisible to the host) removes that failure mode entirely and eliminates bind-mount overhead on MacOS.
2365
2392
Keeping dependency files invisible to the host filesystem also keeps searches cleaner than if they were stashed in a directory under the project root.
2366
2393
+
2367
2394
Dependency caches are _disposable and fully reproducible_ `bundle install`, `npm install`, or `pip install` regenerates them in minutes.
2368
2395
2396
+
[[entrypoint]]
2369
2397
Why an entrypoint script?::
2370
2398
Docker images deployed to a registry cannot know the UID or GID of the user who will run them.
2371
2399
Placing UID/GID reconciliation in the image's own `ENTRYPOINT` script (rather than baking it at build time or requiring a separate file in the user's project) satisfies all three requirements simultaneously:
@@ -2374,11 +2402,25 @@ it runs on every `docker run` or `docker compose run` invocation, works with pre
2374
2402
The entrypoint detects the `HOST_UID` and `HOST_GID` environment variables (passed in by `{compose_config_file}`), adjusts the container user's identity to match, then drops privileges and executes the original command (`$CMD` or the default shell).
2375
2403
On MacOS with Docker Desktop, the VM layer provides transparent ownership mapping and the entrypoint is a no-op (it does nothing and throws no error).
2376
2404
2405
+
[[tool-request]]
2377
2406
Why no [your runtime here]?::
2378
2407
The `max` images include Ruby, Node.js, and Python because they are the environments I repeatedly find myself using and recommending to clients.
2379
2408
Tempted as I am to add Java, Go, and Rust, I have no real experience supporting these platforms and only sporadic need.
2380
2409
Go, Haskell, and Rust applications typically compile to static binaries that run just fine on the host, such as Vale and Pandoc.
2381
2410
Adding more runtimes would also bloat the image size and build time, and I want to keep the project focused on documentation operations rather than becoming a general-purpose development environment.
2411
+
+
2412
+
_If you have a strong case for a runtime or tool_ not currently included that would likely be widely appreciated, link:https://github.com/DocOps/box/issues/new?labels=tool%20request[file a tool-request issue].
2413
+
I will consider adding it if it fits the project's scope and my experience, or at least I will document my reasons for declining and help you build a custom image with your tool included.
2414
+
2415
+
pass:[<!-- vale DocOpsLab-Authoring.Spelling = NO -->]
2416
+
2417
+
[[vibe-code]]
2418
+
Should we vibe code it?::
2419
+
Absolutely not.
2420
+
See link:https://docopslab.org/blog/vibe-coding-vs-programming/[my blog post] as well as link:https://passo.uno/tools-slop-is-a-problem/["`Most vibe-coded tools are not for you`"] from fellow traveler Fabrizio Ferri Benedetti for approved takes on the quality bar for shippable software.
2421
+
LLM/agent assistance is welcome, but everything gets fully reviewed and manually pressure tested.
0 commit comments