diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Changelog for gachi-scaffold
+
+## 0.1.0.1 — 2026-11-03
+
+- Strict Hackage metadata hardening: added category, description, and PVP upper bounds across all build dependencies.
+
+## 0.1.0.0 — Initial Release
+
+- Declarative multi-package workspace scaffolding engine.
+- Hackage-compliant project templates and cabal configurations.
+- Verification gates, git hooks, and markdown documentation generation.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,189 @@
+EUROPEAN UNION PUBLIC LICENCE v. 1.2
+EUPL © the European Union 2007, 2016
+
+This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the
+terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such
+use is covered by a right of the copyright holder of the Work).
+The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following
+notice immediately following the copyright notice for the Work:
+                          Licensed under the EUPL
+or has expressed by any other means his willingness to license under the EUPL.
+
+1.Definitions
+In this Licence, the following terms have the following meaning:
+— ‘The Licence’:this Licence.
+— ‘The Original Work’:the work or software distributed or communicated by the Licensor under this Licence, available
+as Source Code and also as Executable Code as the case may be.
+— ‘Derivative Works’:the works or software that could be created by the Licensee, based upon the Original Work or
+modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work
+required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in
+the country mentioned in Article 15.
+— ‘The Work’:the Original Work or its Derivative Works.
+— ‘The Source Code’:the human-readable form of the Work which is the most convenient for people to study and
+modify.
+— ‘The Executable Code’:any code which has generally been compiled and which is meant to be interpreted by
+a computer as a program.
+— ‘The Licensor’:the natural or legal person that distributes or communicates the Work under the Licence.
+— ‘Contributor(s)’:any natural or legal person who modifies the Work under the Licence, or otherwise contributes to
+the creation of a Derivative Work.
+— ‘The Licensee’ or ‘You’:any natural or legal person who makes any usage of the Work under the terms of the
+Licence.
+— ‘Distribution’ or ‘Communication’:any act of selling, giving, lending, renting, distributing, communicating,
+transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential
+functionalities at the disposal of any other natural or legal person.
+
+2.Scope of the rights granted by the Licence
+The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for
+the duration of copyright vested in the Original Work:
+— use the Work in any circumstance and for all usage,
+— reproduce the Work,
+— modify the Work, and make Derivative Works based upon the Work,
+— communicate to the public, including the right to make available or display the Work or copies thereof to the public
+and perform publicly, as the case may be, the Work,
+— distribute the Work or copies thereof,
+— lend and rent the Work or copies thereof,
+— sublicense rights in the Work or copies thereof.
+Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the
+applicable law permits so.
+In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed
+by law in order to make effective the licence of the economic rights here above listed.
+The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the
+extent necessary to make use of the rights granted on the Work under this Licence.
+
+3.Communication of the Source Code
+The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as
+Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with
+each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to
+the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to
+distribute or communicate the Work.
+
+4.Limitations on copyright
+Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the
+exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations
+thereto.
+
+5.Obligations of the Licensee
+The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those
+obligations are the following:
+
+Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to
+the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the
+Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work
+to carry prominent notices stating that the Work has been modified and the date of modification.
+
+Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this
+Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless
+the Original Work is expressly distributed only under this version of the Licence — for example by communicating
+‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the
+Work or Derivative Work that alter or restrict the terms of the Licence.
+
+Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both
+the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done
+under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed
+in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with
+his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail.
+
+Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide
+a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available
+for as long as the Licensee continues to distribute or communicate the Work.
+Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names
+of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the copyright notice.
+
+6.Chain of Authorship
+The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or
+licensed to him/her and that he/she has the power and authority to grant the Licence.
+Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or
+licensed to him/her and that he/she has the power and authority to grant the Licence.
+Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions
+to the Work, under the terms of this Licence.
+
+7.Disclaimer of Warranty
+The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work
+and may therefore contain defects or ‘bugs’ inherent to this type of development.
+For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind
+concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or
+errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this
+Licence.
+This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work.
+
+8.Disclaimer of Liability
+Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be
+liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the
+Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss
+of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However,
+the Licensor will be liable under statutory product liability laws as far such laws apply to the Work.
+
+9.Additional agreements
+While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services
+consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole
+responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by
+the fact You have accepted any warranty or additional liability.
+
+10.Acceptance of the Licence
+The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window
+displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of
+applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms
+and conditions.
+Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You
+by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution
+or Communication by You of the Work or copies thereof.
+
+11.Information to the public
+In case of any Distribution or Communication of the Work by means of electronic communication by You (for example,
+by offering to download the Work from a remote location) the distribution channel or media (for example, a website)
+must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence
+and the way it may be accessible, concluded, stored and reproduced by the Licensee.
+
+12.Termination of the Licence
+The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms
+of the Licence.
+Such a termination will not terminate the licences of any person who has received the Work from the Licensee under
+the Licence, provided such persons remain in full compliance with the Licence.
+
+13.Miscellaneous
+Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the
+Work.
+If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or
+enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid
+and enforceable.
+The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of
+the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence.
+New versions of the Licence will be published with a unique version number.
+All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take
+advantage of the linguistic version of their choice.
+
+14.Jurisdiction
+Without prejudice to specific agreement between parties,
+— any litigation resulting from the interpretation of this License, arising between the European Union institutions,
+bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice
+of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union,
+— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to
+the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business.
+
+15.Applicable Law
+Without prejudice to specific agreement between parties,
+— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat,
+resides or has his registered office,
+— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside
+a European Union Member State.
+
+Appendix
+
+‘Compatible Licences’ according to Article 5 EUPL are:
+— GNU General Public License (GPL) v. 2, v. 3
+— GNU Affero General Public License (AGPL) v. 3
+— Open Software License (OSL) v. 2.1, v. 3.0
+— Eclipse Public License (EPL) v. 1.0
+— CeCILL v. 2.0, v. 2.1
+— Mozilla Public Licence (MPL) v. 2
+— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
+— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software
+— European Union Public Licence (EUPL) v. 1.1, v. 1.2
+— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+).
+
+The European Commission may update this Appendix to later versions of the above licences without producing
+a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the
+covered Source Code from exclusive appropriation.
+All other changes or additions to this Appendix require the production of a new EUPL version.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# gachi-scaffold
+
+**Declarative Multi-Package Workspace Scaffolding Engine for Gachi**
+
+`gachi-scaffold` generates complete, turn-key Haskell workspaces adhering strictly to the canonical ecosystem standardization matrix (`~/src/PLAN.md` §1 and `Note [Ecosystem Standardization Invariants]` `[ref:note-ecosystem-standardization]`).
+
+## Overview
+
+Given a declarative `Project` specification from `gachi-schema` (loaded from Dhall or instantiated in Haskell), `gachi-scaffold` synthesizes the entire canonical repository skeleton:
+
+1. **Multi-Package Hierarchy:**
+   - Modular package directories (`packages/<name>/src`, `packages/<name>/test`)
+   - Fully configured Cabal 3.0 package manifests (`packages/<name>/<name>.cabal`)
+   - Initial Haskell modules with comprehensive Haddock documentation, passing the $\ge 50\%$ comment density gate out of the box
+   - Standard Hspec test suites (`packages/<name>/test/Main.hs`)
+
+2. **Root Toolchain & Build Assets:**
+   - Multi-package `cabal.project` pinning GHC (9.14.1) and Cabal (3.18)
+   - Developer configuration template `cabal.project.local.example`
+   - Strict HLint configuration `.hlint.yaml` enforcing zero-hint cleanliness
+   - Git commit message template `.gitmessage` with Sarutahiko AI attribution rules
+   - Git hooks `.githooks/commit-msg` (RFC 2822 trailer validation) and `.githooks/pre-commit` (tagref and linkcheck validation)
+
+3. **Canonical Documentation Corpus:**
+   - System design note `docs/notes/<PROJECT>_DESIGN.md`
+   - Corpus inventory `docs/INDEX.md`
+   - Interactive getting started guide `docs/TUTORIAL.md`
+   - Token-conservation guide `docs/NEWBIE_GUIDE.md`
+   - Architectural governance guide `docs/MAINTAINER_GUIDE.md`
+   - Documentation policy `docs/notes/DOC_STRATEGY.md`
+   - Commit attribution guidelines `docs/notes/COMMIT_ATTRIBUTION.md`
+
+4. **Turnkey Verification Suite (`bin/`):**
+   - 5-gate physical verification script `bin/<project>-verify`
+   - Mechanical Tagref cross-reference validator `bin/<project>-tagref`
+   - Markdown relative link & anchor validator `bin/<project>-linkcheck`
+   - In-code comment density audit harness `bin/<project>-cloc`
+   - Symbol tag indexer `bin/generate-tags`
+
+5. **Operational Governance & Agent Guidance:**
+   - Strategic roadmap `PLAN.md` and active frontier `STATE.md`
+   - Agent advisory context `AGENTS.md` and `CLAUDE.md` pointer
+   - Subdivided operational rules under `.agents/rules/`
+
+## Invariants & Notes
+
+- **Note [Ecosystem Standardization Invariants]** `[ref:note-ecosystem-standardization]`:
+  Every generated repository skeleton must satisfy all 5 physical verification gates immediately upon creation without human intervention.
+- **Note [Dhall Parameterized Skeleton Templating]** `[ref:note-dhall-skeleton-templating]`:
+  All template rendering functions are pure, deterministic functions of the underlying `Project` schema.
+
+## License
+
+EUPL-1.2 (European Union Public Licence 1.2).
diff --git a/gachi-scaffold.cabal b/gachi-scaffold.cabal
--- a/gachi-scaffold.cabal
+++ b/gachi-scaffold.cabal
@@ -1,16 +1,33 @@
 cabal-version: 3.0
 name: gachi-scaffold
-version: 0.1.0.0
+version: 0.1.0.1
 synopsis: Declarative multi-package workspace scaffolding engine for Gachi
+description:
+  Declarative multi-package workspace scaffolding engine for Gachi.
+  Generates Hackage-compliant multi-package repositories, cabal
+  configurations, physical verification gates, git hooks, and documentation
+  skeletons.
 license: EUPL-1.2
+license-file: LICENSE
 author: Nadia Yvette Chambers
 maintainer: nadia.yvette.chambers@ik.me
+category: Development
+homepage: https://github.com/NadiaYvette/gachi
+bug-reports: https://github.com/NadiaYvette/gachi/issues
+extra-doc-files:
+  README.md
+  CHANGELOG.md
 build-type: Simple
 tested-with:
   GHC == 9.10.3,
   GHC == 9.12.4,
   GHC == 9.14.1
 
+source-repository head
+  type: git
+  location: https://github.com/NadiaYvette/gachi
+  subdir: packages/gachi-scaffold
+
 library
   exposed-modules:
     Gachi.Scaffold
@@ -26,10 +43,10 @@
     gachi-core >= 0.1 && < 0.2,
     gachi-schema >= 0.1 && < 0.2,
     polytropos-core >= 0.1 && < 0.2,
-    text >= 2.0,
-    containers >= 0.6,
-    filepath >= 1.4,
-    directory >= 1.3
+    text >= 2.0 && < 2.2,
+    containers >= 0.6 && < 0.9,
+    filepath >= 1.4 && < 1.6,
+    directory >= 1.3 && < 1.4
 
 test-suite tests
   type: exitcode-stdio-1.0
@@ -42,11 +59,11 @@
     gachi-core,
     gachi-schema,
     gachi-scaffold,
-    polytropos-core,
-    text >= 2.0,
-    containers >= 0.6,
-    filepath >= 1.4,
-    directory >= 1.3,
-    process >= 1.6,
-    time >= 1.9,
-    hspec >= 2.10
+    polytropos-core >= 0.1 && < 0.2,
+    text >= 2.0 && < 2.2,
+    containers >= 0.6 && < 0.9,
+    filepath >= 1.4 && < 1.6,
+    directory >= 1.3 && < 1.4,
+    process >= 1.6 && < 1.7,
+    time >= 1.9 && < 1.16,
+    hspec >= 2.10 && < 2.12
diff --git a/src/Gachi/Scaffold.hs b/src/Gachi/Scaffold.hs
--- a/src/Gachi/Scaffold.hs
+++ b/src/Gachi/Scaffold.hs
@@ -107,8 +107,11 @@
   , docsCommitAttributionTemplate
   , packageCabalTemplate
   , packageReadmeTemplate
+  , packageLicenseTemplate
+  , packageChangelogTemplate
   , packageModuleTemplate
   , packageTestTemplate
+  , licenseTemplate
 
     -- * Markdown AST & Pretty-Printing
   , Block(..)
@@ -199,9 +202,12 @@
   , linkcheckScriptTemplate
   , moduleToFilePath
   , packageCabalTemplate
+  , packageLicenseTemplate
+  , packageChangelogTemplate
   , packageModuleTemplate
   , packageReadmeTemplate
   , packageTestTemplate
+  , licenseTemplate
   , planTemplate
   , preCommitHookTemplate
   , readmeTemplate
diff --git a/src/Gachi/Scaffold/Templates.hs b/src/Gachi/Scaffold/Templates.hs
--- a/src/Gachi/Scaffold/Templates.hs
+++ b/src/Gachi/Scaffold/Templates.hs
@@ -74,8 +74,11 @@
     -- * Package Asset Templates
   , packageCabalTemplate
   , packageReadmeTemplate
+  , packageLicenseTemplate
+  , packageChangelogTemplate
   , packageModuleTemplate
   , packageTestTemplate
+  , licenseTemplate
 
     -- * String & Path Utilities
   , defaultModuleName
@@ -161,6 +164,7 @@
     , agentRuleEntries proj
     , documentationCorpusEntries proj
     , packageHierarchyEntries proj
+    , licensingEntries proj
     ]
 
 --------------------------------------------------------------------------------
@@ -711,6 +715,34 @@
   , FileEntry "STATE.md" (stateTemplate proj) False
   ]
 
+-- | Synthesizes root @LICENSE@ and @LICENSES/@ files.
+licensingEntries :: Project -> [FileEntry]
+licensingEntries proj =
+  [ FileEntry "LICENSE" (licenseTemplate proj) False
+  , FileEntry ("LICENSES/" <> T.unpack (projectLicense proj) <> ".txt") (licenseTemplate proj) False
+  ]
+
+-- | Generates standard LICENSE text (EUPL-1.2 notice).
+licenseTemplate :: Project -> Text
+licenseTemplate proj =
+  let auth = projectAuthor proj
+  in T.unlines
+    [ "European Union Public Licence v. 1.2"
+    , "EUPL © the European Union 2007, 2016"
+    , ""
+    , "Copyright (c) 2026 " <> authorName auth <> " <" <> authorEmail auth <> ">"
+    , ""
+    , "This European Union Public Licence (the 'EUPL') applies to the Work which is"
+    , "provided under the terms of this Licence. Any use of the Work, other than as"
+    , "authorised under this Licence is prohibited (to the extent such use is covered"
+    , "by a right of the copyright holder of the Work)."
+    , "The Work is provided under the terms of this Licence when the Licensor has"
+    , "placed the following notice immediately following the copyright notice for"
+    , "the Work:"
+    , "                      Licensed under the EUPL"
+    , "or has expressed by any other means their willingness to license under the EUPL."
+    ]
+
 -- | Generates root @README.md@ describing project overview, build steps, and licenses.
 readmeTemplate :: Project -> Text
 readmeTemplate proj =
@@ -1098,6 +1130,8 @@
   let pName = T.unpack (packageName pkg)
       cabalFile = "packages/" <> pName <> "/" <> pName <> ".cabal"
       readmeFile = "packages/" <> pName <> "/README.md"
+      licenseFile = "packages/" <> pName <> "/LICENSE"
+      changelogFile = "packages/" <> pName <> "/CHANGELOG.md"
       testFile = "packages/" <> pName <> "/test/Main.hs"
       exposes = case packageExposes pkg of
         [] -> [defaultModuleName (packageName pkg)]
@@ -1111,10 +1145,12 @@
         ]
   in [ FileEntry cabalFile (packageCabalTemplate proj pkg) False
      , FileEntry readmeFile (packageReadmeTemplate proj pkg) False
+     , FileEntry licenseFile (packageLicenseTemplate proj) False
+     , FileEntry changelogFile (packageChangelogTemplate proj pkg) False
      , FileEntry testFile (packageTestTemplate proj pkg) False
      ] ++ moduleFiles
 
--- | Generates a package's Cabal manifest.
+-- | Generates a package's Cabal manifest adhering strictly to Hackage upload standards.
 packageCabalTemplate :: Project -> PackageSpec -> Text
 packageCabalTemplate proj pkg =
   let pName = packageName pkg
@@ -1127,12 +1163,26 @@
     , "name: " <> pName
     , "version: 0.1.0.0"
     , "synopsis: " <> packageSynopsis pkg
+    , "description:"
+    , "  " <> packageSynopsis pkg <> " for the " <> projectName proj <> " ecosystem."
     , "license: " <> projectLicense proj
+    , "license-file: LICENSE"
     , "author: " <> authorName auth
     , "maintainer: " <> authorEmail auth
+    , "category: Development"
+    , "homepage: https://github.com/NadiaYvette/" <> projectName proj
+    , "bug-reports: https://github.com/NadiaYvette/" <> projectName proj <> "/issues"
+    , "extra-doc-files:"
+    , "  README.md"
+    , "  CHANGELOG.md"
     , "build-type: Simple"
     , "tested-with: GHC == " <> projectGhcVersion proj
     , ""
+    , "source-repository head"
+    , "  type: git"
+    , "  location: https://github.com/NadiaYvette/" <> projectName proj
+    , "  subdir: packages/" <> pName
+    , ""
     , "library"
     , "  exposed-modules:"
     ] <> T.unlines [ "    " <> m | m <- exposes ] <>
@@ -1145,8 +1195,8 @@
     , "  ghc-options: -Wall -Wcompat -Wredundant-constraints"
     , "  build-depends:"
     , "    base >= 4.14 && < 5,"
-    , "    text >= 2.0,"
-    , "    containers >= 0.6"
+    , "    text >= 2.0 && < 2.2,"
+    , "    containers >= 0.6 && < 0.9"
     , ""
     , "test-suite tests"
     , "  type: exitcode-stdio-1.0"
@@ -1156,12 +1206,30 @@
     , "  default-extensions:"
     , "    OverloadedStrings"
     , "    DerivingStrategies"
-    , "  ghc-options: -Wall"
+    , "  ghc-options: -Wall -Wcompat -Wredundant-constraints -threaded"
     , "  build-depends:"
     , "    base >= 4.14 && < 5,"
     , "    " <> pName <> ","
-    , "    text >= 2.0,"
-    , "    hspec >= 2.10"
+    , "    text >= 2.0 && < 2.2,"
+    , "    containers >= 0.6 && < 0.9,"
+    , "    hspec >= 2.10 && < 2.12"
+    ]
+
+-- | Generates a package's @LICENSE@ file.
+packageLicenseTemplate :: Project -> Text
+packageLicenseTemplate = licenseTemplate
+
+-- | Generates a package's @CHANGELOG.md@.
+packageChangelogTemplate :: Project -> PackageSpec -> Text
+packageChangelogTemplate _proj pkg =
+  let pName = packageName pkg
+  in T.unlines
+    [ "# Changelog for " <> pName
+    , ""
+    , "## 0.1.0.0 — Initial Release"
+    , ""
+    , "- Initial release of " <> pName <> "."
+    , "- " <> packageSynopsis pkg
     ]
 
 -- | Generates a package's @README.md@.
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -171,6 +171,8 @@
       forM_
         [ "packages/gongju-core/gongju-core.cabal"
         , "packages/gongju-core/README.md"
+        , "packages/gongju-core/LICENSE"
+        , "packages/gongju-core/CHANGELOG.md"
         , "packages/gongju-core/src/Gongju/Core.hs"
         , "packages/gongju-core/src/Gongju/TypeLevel.hs"
         , "packages/gongju-core/test/Main.hs"
