diff --git a/ask/ask.go b/ask/ask.go
index 6581365d12a184d5d7b06159b12f46a0b373da8c..33e1cd483f24fb01e1fd826551e79230d8b03c0c 100644
--- a/ask/ask.go
+++ b/ask/ask.go
@@ -1,6 +1,8 @@
/*
Package ask provides routines to ask questions of users. It handles
-getting a line of text, getting a choice from a liat and other things.
+getting a line of text, getting a choice from a list and other things.
+
+Underneath it uses the [github.com/chzyer/readline] module.
*/
package ask
diff --git a/batch/batch.go b/batch/batch.go
index 6de3eef290c820f00c124898645c4988833c6318..0176b7b9095848d6d4d25e2c1e735b2fe152daef 100644
--- a/batch/batch.go
+++ b/batch/batch.go
@@ -1,4 +1,19 @@
-// Package batch contains the non-interactive maintenence commands.
+// Package batch contains both interactive and non-interactive maintenence
+// commands.
+//
+// The interactive batch commands are as follows:
+//
+// - `install` does the initial install for bulletin. This will create
+// and seed the database and create the initial user. It will also
+// create the user's crontab entries.
+// - `new-user` creates a new user.
+//
+// The non-interactive batch commands are run from the user's crontab.
+//
+// - `reboot` is supposed to be run on system reboot and will delete
+// all shutdown messages.
+// - `expire` removes all expired messages and deletes broadcast messages
+// older than 3 days.
package batch
import (
diff --git a/dclish/dclish.go b/dclish/dclish.go
index 9f2096ef37fac3bb2e59b30a4f1cca1dc657a326..ecffd54662d5e3e3f253bbdee5d82f5c272520a6 100644
--- a/dclish/dclish.go
+++ b/dclish/dclish.go
@@ -1,4 +1,35 @@
-// Package dclish A DCL-like command line parser.
+/*
+Package dclish A DCL-like command line parser.
+
+From the OpenVMS manual on how to parse a DCL command line.
+
+The following rules apply when entering DCL commands. Refer to
+Chapter 5 for information about using extended file names in DCL
+commands.
+
+ - Use any combination of uppercase and lowercase letters. The DCL
+ interpreter translates lowercase letters to uppercase. Uppercase and
+ lowercase characters in parameter and qualifier values are equivalent
+ unless enclosed in quotation marks (" ").
+ - Separate the command name from the first parameter with at least one
+ blank space or a tab.
+ - Separate each additional parameter from the previous parameter or
+ qualifier with at least one blank space or a tab.
+ - Begin each qualifier with a slash (/). The slash serves as a separator
+ and need not be preceded by blank spaces or tabs.
+ - If a parameter or qualifier value includes a blank space or a tab,
+ enclose the parameter or qualifier value in quotation marks.
+ - You cannot specify null characters (<NUL>) on a DCL command line,
+ even if you enclose the null character in quotation marks.
+ - Include no more than 127 elements (parameters, qualifiers, and qualifier
+ values) in each command line.
+ - Each element in a command must not exceed 255 characters. The entire
+ command must not exceed 1024 characters after all symbols1 and lexical
+ functions2 are converted to their values.
+ - You can abbreviate a command as long as the abbreviated name remains
+ unique among the defined commands on a system. DCL looks only at the
+ first four characters for uniqueness.
+*/
package dclish
import (