Automated list of custom (user-created) fields?

Absolutely doable! Here’s a quick and dirty sample:

\function excludeFields()
[all[shadows]removeprefix[$:/language/Docs/Fields/]]
first-search-filter
second-search-filter
exclude-me
[prefix[ignore-]]
exclude-me-too
+[join[ ]]
\end

<table>
<tr>
	<th>Field</th>
	<th>Tiddlers</th>
</tr>
<$list filter="[!is[system]fields[]] -[enlist<excludeFields>] +[sort[]]" variable="field">
<tr>
	<td><<field>></td>
	<td><<list-links "[!is[system]has<field>]">></td>
</tr>
</$list>
</table>

Notes:

  • I’m using the function excludeFields to generate a list of fields you don’t want to see. The [all[shadows]removeprefix[$:/language/Docs/Fields/]] filter is a trick @Scott_Sauyet shared here; I think it’s more efficient than manually listing all the system fields you want to exclude. But below it, I’ve also included some examples of other fields you might want to remove — either by listing their titles directly (e.g. first-search-filter, exclude-me) or by writing a filter run to descibe them (e.g. [prefix[ignore]]). You can remove or alter any of these — just keep the final +[join[ ]], which is needed to reassemble all your field names into a space-separated list (for later use with enlist).
  • Within the table, I’m using $list to first generate one row per field name, and storing that field name in the variable <<field>>. Inside this outer list, I’ve nested a <<list-links>> to filter for tiddlers that use this field.
  • I used [!is[system]has<field>] as my list-links filter, which will display all the tiddlers that have a non-empty field. If you want to see all tiddlers that have the field name, empty or not, you can replace has with has:field.