dbt docs took out so much pain of keeping concise and fresh documentation. And it is beautiful!
But am I alone wanting to keep the documentation even closer to the code, maybe within SQL files themselves, just like Python docstring? I would give no excuse for out-of-sync docs to myself this way.
So, I just created dbtdocstr command. You need Python 3 to run this command.
 I may not be aware of any similar programs and I may be just embarrassing myself, but I found this little tool to be useful and am hoping that it does good for others, too. ![]()
From REAME.md:
Install
pip install dbt_docstring
How does it work?
dbtdocstr command scans .sql files under dbt’s models directories and look for a block that begins with   ```dbt  and end with  ```. Inside the block you can write the content of the models section of schema.yml corresponding to the current table as specified in dbt document:
Example (<dbt_project_root_directory>/models/api_key_status.sql)
/*
# API key status
This table lists the API keys with the status.
```dbt
columns:
  - name: api_key
    description: API key
    tests:
      - unique
  - name: enabled
    description: True if API key is enabled status
  - name: update_datetime
    description: Last update date and time
```
*/
SELECT
   api_key,
   enabled,
   update_datetime
FROM {{ ref('my_api_key_list') }}
Then run:
dbtdocstr <dbt_project_root_directory>
These two files will be auto-generated from each .sql file in the dbt project:
models/docs.md :
{% docs api_key_status %}
# API key status
This table lists the API keys with the status.
{% enddocs %}
models/schema.yml :
version: 2
models:
  - name: api_key_status
    description: '{{ docs("api_key_status") }}'
    columns:
      - name: api_key
        description: API key
        tests:
          - unique
      - name: enabled
        description: True if API key is enabled status
      - name: update_datetime
        description: Last update date and time
  - name: ...
To see the document generation, use dbt command:
dbt docs generate
dbt docs serve
Notes
- The doc must be a SQL comment block comment that begins with ‘/’ and ends with '/’
 - The first comment block will be extracted.
 - The dbt block is searched within the first comment block.
 - Any text after the dbt block will be ignored.
 - dbt’s Docs Blocks feature can be used only for table & view description. Not column descriptions.
 - 
dbtdocstr --backup <dbt_root_directory>to create backup files of schema.yml and docs.yml if they exsit. - You should be able to add test