{"id":13561796,"url":"https://github.com/twitter/repo-scaffolding","last_synced_at":"2026-02-06T01:43:32.691Z","repository":{"id":55949976,"uuid":"136096407","full_name":"twitter/repo-scaffolding","owner":"twitter","description":"Tools for creating repos based on open source standards and best practices","archived":false,"fork":false,"pushed_at":"2021-08-17T17:58:52.000Z","size":41,"stargazers_count":36,"open_issues_count":1,"forks_count":22,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-03T17:38:50.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twitter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-05T00:10:54.000Z","updated_at":"2025-01-08T18:46:05.000Z","dependencies_parsed_at":"2022-08-15T10:10:24.672Z","dependency_job_id":null,"html_url":"https://github.com/twitter/repo-scaffolding","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/twitter/repo-scaffolding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frepo-scaffolding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frepo-scaffolding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frepo-scaffolding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frepo-scaffolding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitter","download_url":"https://codeload.github.com/twitter/repo-scaffolding/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frepo-scaffolding/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264504616,"owners_count":23618831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:01:01.225Z","updated_at":"2026-02-06T01:43:32.639Z","avatar_url":"https://github.com/twitter.png","language":null,"funding_links":[],"categories":["Project Quality"],"sub_categories":[],"readme":"# repo-scaffolding\n\nScaffolding tools for creating and maintaining projects based on Twitter Open Source standards and best practices. The project has 3 parts -\n\n1. [Cookiecutter template to generate Twitter OSS policy files e.g. LICENSE, CONTRIBUTING, etc.](https://github.com/twitter/repo-scaffolding#1-cookiecutter)\n2. [Script to add License headers to all source files in a project](https://github.com/twitter/repo-scaffolding#2-license-headers-script)\n3. [Lint a repository for common missing files (repolinter)](https://github.com/twitter/repo-scaffolding#3-linting-repolinter)\n\n---\n\n## 1. Cookiecutter template to generate OSS policy files\n\nA [cookiecutter](https://github.com/audreyr/cookiecutter) template to generate necessary files for a Twitter Open Source project.\n\n### Requirements\nInstall `cookiecutter` command line: `pip install cookiecutter`\n\n---\n`pip` is the package manager for Python.\n\nNote: `cookiecutter` can be installed with both `pip` and `pip3`.\n\n\n### Usage\n\nRun cookiecutter against this repository.\n\n`cookiecutter https://github.com/twitter/repo-scaffolding`\n\nor\n\n`cookiecutter gh:twitter/repo-scaffolding`\n\nor\n\nYou can also run it locally after cloning this repository:\n\n`cookiecutter /path/to/directory/`\n\nSee [documentation](https://github.com/audreyr/cookiecutter#readme) for more usage instructions.\n\n### Inputs\n\nSee [cookiecutter.json](/cookiecutter.json) for all the variables required as input. Here is the list of places they are used\n\n - `author_full_name`: 1 time in `README.md` in the `Authors` section.\n - `author_email`: 1 time in `README.md` in the `Authors` section\n - `project_slug`: 1 time in `README.md` and also for the name of the parent directory\n - `github_repo_url`:  2 times in `README.md` and 4 times in `CONTRIBUTING.md` for the GitHub repo links\n - `short_description`: 1 time in `README.md`\n - `project_homepage`: 1 time in `README.md`\n - `documentation_homepage`: 1 time in `README.md`\n - `mailing_list`: 1 time in `README.md`\n - `release_year`: 1 time in `LICENSE` and 1 time in `README.md`\n\n### Notes\n - Make sure to update the `TODO` sections in `README.md` and `CONTRIBUTING.md` after generating the files\n\n## 2. License Headers\n\nAll source files [must have a license header](http://go/licenseheaders) at the top.\nIf you need to add headers to a lot of files, we recommend using the [google/addlicense](https://github.com/google/addlicense) tool.\n\n## Installation\n\nDownload the [latest release](https://github.com/google/addlicense/releases/latest) for your operating system,\nand place the binary someone in your shell path (like `/usr/local/bin/`).\nAlternately, follow the [instructions for running with Docker](https://github.com/google/addlicense#running-in-a-docker-container).\n\n## Usage\n\nFirst, check to see which files addlicense would add headers to:\n\n```\n$ cd \u003cpath_to_source_dir\u003e\n$ addlicense -check .\n```\n\nIf that looks right, add the appropriate Twitter headers:\n\n```\n$ addlicense -c \"Twitter, Inc.\" -l \"Apache-2.0\" -s=only .\n```\n\nIf you have third-party source in a `vendor` or `node_modules` directory, you\ncan ignore those with the `-ignore` flag to addlicense.\n\n\n## 3. Linting (repolinter)\n\nLint all the necessary files in the project. - [Project Homepage](https://github.com/todogroup/repolinter)\n\n- To run against a directory, use `npx repolinter /my/code/dir`\n- To run against a git repository, use the --git option: `npx repolinter --git https://my.git.code/awesome`\n- Note, if you are running a version of npm \u003c 5.2.0, run `npm install npx` first.\n\n\n---\n\n## Authors\n\n* TwitterOSS \u003copensource [at] twitter [dot] com\u003e\n\nFollow [@TwitterOSS](https://twitter.com/twitteross) on Twitter for updates.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Frepo-scaffolding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwitter%2Frepo-scaffolding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Frepo-scaffolding/lists"}