heymark 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mossland Open Source
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ko.md ADDED
@@ -0,0 +1,170 @@
1
+ # Heymark
2
+
3
+ AI 코딩 도구별 Skill 문서를 단일 위치에서 관리하고, 각 도구 형식으로 자동 변환하는 도구입니다.
4
+ 한 번 작성한 Markdown 소스를 여러 에이전트 도구에 맞춰 재사용할 수 있습니다.
5
+
6
+ 1. [Overview](#overview)
7
+ 2. [Features](#features)
8
+ 3. [Supported Agent Tools](#supported-agent-tools)
9
+ 4. [Tech Stack](#tech-stack)
10
+ 5. [Heymark Usage](#heymark-usage)
11
+ 6. [Heymark Development](#heymark-development)
12
+
13
+ ## Overview
14
+
15
+ 프로젝트마다 AI 도구별 Skill 파일을 따로 관리하면 문서가 분산되고 유지보수 비용이 커집니다.
16
+ Heymark는 단일 진실 공급원(Single Source of Truth) 원칙으로, 하나의 Markdown 소스를 여러 도구 형식으로 변환합니다.
17
+ 한 번 작성한 Skill을 Cursor, Claude Code, GitHub Copilot, OpenAI Codex, Antigravity에서 바로 사용할 수 있습니다.
18
+
19
+ ## Features
20
+
21
+ - 단일 소스 관리: Markdown 파일 하나로 여러 AI 도구의 Skill을 통합 관리
22
+ - 자동 형식 변환: 각 도구의 네이티브 형식으로 자동 변환 (YAML frontmatter, AGENTS.md 등)
23
+ - 선택적 변환: 필요한 도구만 선택해서 변환 가능
24
+ - NPM 패키지 배포: npx 기반으로 설치 없이 실행 가능
25
+ - 플러그인 구조: 변환 모듈을 추가해 지원 도구 확장 가능
26
+
27
+ ## Supported Agent Tools
28
+
29
+ | Tool | Output Format | Key Features |
30
+ | :------------- | :--------------------------------------- | :------------------------------------------------------- |
31
+ | Cursor | `.cursor/rules/*.mdc` | YAML frontmatter (`description`, `globs`, `alwaysApply`) |
32
+ | Claude Code | `.claude/skills/*/SKILL.md` | Skill 디렉터리 구조 + YAML frontmatter |
33
+ | GitHub Copilot | `.github/instructions/*.instructions.md` | `applyTo` 다중 패턴 매핑 |
34
+ | OpenAI Codex | `.agents/skills/*/SKILL.md` | Skill 디렉터리 구조 + YAML frontmatter |
35
+ | Antigravity | `.agent/skills/*/SKILL.md` | Skill 디렉터리 구조 + YAML frontmatter |
36
+
37
+ ## Tech Stack
38
+
39
+ - Runtime: Node.js
40
+ - Language: JavaScript
41
+ - Core: File system API, YAML frontmatter parsing
42
+
43
+ ## Heymark Usage
44
+
45
+ ### 1. Prepare the Skill Markdown Archive Repository
46
+
47
+ Skill 소스 디렉터리(외부 또는 개인 GitHub 저장소)에 Markdown 파일을 작성하고, YAML frontmatter로 메타데이터를 정의합니다.
48
+
49
+ ```markdown
50
+ ---
51
+ description: "AI assistant behavior guidelines"
52
+ globs: "**/*.ts,**/*.tsx"
53
+ alwaysApply: true
54
+ ---
55
+
56
+ # Skill Title
57
+
58
+ Skill content...
59
+ ```
60
+
61
+ 저장소 구조는 다음처럼 단순하게 구성하면 됩니다.
62
+
63
+ ```text
64
+ my-skills-repository/
65
+ ai-behavior.md
66
+ code-conventions.md
67
+ api-skills.md
68
+ ```
69
+
70
+ Skill 소스는 원격 GitHub 저장소(Public/Private)에서 읽습니다.
71
+
72
+ ### 2. Initial Setup
73
+
74
+ 최초 1회, 사용할 Skill 소스 저장소를 설정합니다.
75
+
76
+ ```bash
77
+ # Skill 소스 설정 (.heymark/config.json 생성)
78
+ npx heymark init <GitHub-저장소-URL>
79
+ ```
80
+
81
+ ```bash
82
+ # HTTPS (Private이면 Git credential/토큰 설정 필요)
83
+ npx heymark init https://github.com/org/my-rules.git
84
+
85
+ # SSH (Private 저장소 권장)
86
+ npx heymark init git@github.com:org/my-rules.git
87
+
88
+ # 저장소 안에서 .md가 하위 폴더에 있을 때
89
+ npx heymark init https://github.com/org/my-rules.git --dir rules --branch main
90
+ ```
91
+
92
+ ### 3. Run
93
+
94
+ 설치 없이 npx로 바로 실행할 수 있습니다.
95
+ Skill은 외부 GitHub 저장소에서 가져오며, 저장소 내 Markdown 파일을 각 AI 도구 형식으로 변환해 현재 프로젝트에 생성합니다.
96
+
97
+ ```bash
98
+ # .heymark/config.json에 설정된 외부 Skill 저장소에서 가져와 모든 도구 형식으로 변환
99
+ # (기존 생성 파일 삭제 후 새로 생성)
100
+ npx heymark
101
+
102
+ # 단일 실행에서만 다른 외부 저장소 사용 (.heymark/config.json 무시)
103
+ npx heymark --source https://github.com/org/other-rules.git
104
+
105
+ # 특정 도구만 변환
106
+ npx heymark -t cursor,claude
107
+
108
+ # 미리보기 (파일 생성 없이 변환 결과만 확인)
109
+ npx heymark --preview
110
+
111
+ # 이전에 생성된 도구별 파일 삭제
112
+ npx heymark --clean
113
+
114
+ # CLI help
115
+ npx heymark --help
116
+ ```
117
+
118
+ ## Heymark Development
119
+
120
+ ### 1. Local Execution
121
+
122
+ ```bash
123
+ # Skill 소스 설정 (최초 1회, GitHub 저장소 URL)
124
+ node scripts/sync.js init https://github.com/org/my-rules.git
125
+
126
+ # 모든 도구 형식으로 변환
127
+ node scripts/sync.js
128
+
129
+ # 단일 실행에서만 다른 저장소 사용
130
+ node scripts/sync.js --source https://github.com/org/other-rules.git
131
+
132
+ # 특정 도구만 변환
133
+ node scripts/sync.js -t cursor,claude
134
+
135
+ # 미리보기 (파일 생성 없이 확인)
136
+ node scripts/sync.js --preview
137
+
138
+ # 생성된 파일 삭제
139
+ node scripts/sync.js --clean
140
+ ```
141
+
142
+ ### 2. Release
143
+
144
+ ```bash
145
+ # NPM 로그인
146
+ npm login
147
+ # Username: your-npm-username
148
+ # Email: your-email@example.com
149
+
150
+ # 1. Skill 수정 후 테스트
151
+ node scripts/sync.js --preview
152
+
153
+ # 2. 버전 업데이트 (자동으로 Git 태그 생성)
154
+ npm version patch # 또는 minor, major
155
+
156
+ # 3. GitHub에 푸시
157
+ git push --follow-tags # 커밋과 태그를 함께 푸시
158
+
159
+ # 4. NPM에 배포
160
+ npm publish
161
+ ```
162
+
163
+ ### 3. Versioning
164
+
165
+ - `patch` (1.0.0 -> 1.0.1): 버그 수정, 오타 수정
166
+ - `minor` (1.0.0 -> 1.1.0): 새 Skill 추가, 기능 개선
167
+ - `major` (1.0.0 -> 2.0.0): 호환성 깨지는 변경
168
+ - `npm version` 명령어는 자동으로 Git 태그를 생성합니다.
169
+ - `git push --follow-tags`는 일반 커밋과 태그를 함께 푸시합니다. (권장)
170
+ - 또는 `git push && git push --tags`로 커밋 푸시 후 모든 태그를 별도로 푸시할 수 있습니다.
package/README.md CHANGED
@@ -1,226 +1,170 @@
1
- # Heymark
2
-
3
- AI 코딩 도구의 컨벤션을 중앙에서 관리하고, 도구 형식으로 자동 변환하는 시스템.
4
-
5
- 1. [Overview](#overview)
6
- 2. [Features](#features)
7
- 3. [Tech Stack](#tech-stack)
8
- 4. [Publishing](#publishing)
9
- 5. [Integration](#integration)
10
- 6. [Getting Started](#getting-started)
11
- 7. [Tool Support](#tool-support)
12
-
13
- ## Overview
14
-
15
- 프로젝트마다 AI 도구별 규칙 파일을 따로 작성하면 관리가 파편화된다.
16
- 시스템은 단일 진실 공급원(Single Source of Truth) 원칙에 따라, 곳에서 작성한 규칙을 여러 AI 도구 형식으로 자동 변환한다.
17
- 규칙을 번만 작성하면 Cursor, Claude Code, GitHub Copilot, OpenAI Codex 등에서 즉시 사용할 수 있다.
18
-
19
- ## Features
20
-
21
- - **단일 소스 관리**: 마크다운 파일 하나로 모든 AI 도구의 규칙 통합 관리
22
- - **자동 형식 변환**: 4종 AI 도구의 네이티브 형식으로 자동 변환 (YAML frontmatter, AGENTS.md )
23
- - **선택적 변환**: 특정 도구만 선택하여 변환 가능
24
- - **NPM 패키지 배포**: NPM registry를 통한 public 배포로 간편한 설치 및 버전 관리
25
- - **플러그인 구조**: 변환 모듈 추가만으로 도구 지원 확장
26
-
27
- ## Tech Stack
28
-
29
- - **Runtime**: Node.js
30
- - **Language**: JavaScript
31
- - **Core**: File system API, YAML frontmatter parsing
32
-
33
- ## Publishing
34
-
35
- 패키지 관리자용 가이드 (일반 사용자는 [Integration](#integration) 참고).
36
-
37
- ### 초기 설정 (한 번만)
38
-
39
- ```bash
40
- # NPM 로그인
41
- npm login
42
- # Username: your-npm-username
43
- # Email: your-email@example.com
44
- ```
45
-
46
- ### 배포 프로세스
47
-
48
- ```bash
49
- # 1. 규칙 수정 후 테스트
50
- node scripts/sync.js --preview
51
-
52
- # 2. 버전 업데이트 (자동으로 Git 태그 생성)
53
- npm version patch # 또는 minor, major
54
-
55
- # 3. GitHub에 푸시
56
- git push --follow-tags # 커밋과 태그를 함께 푸시
57
-
58
- # 4. NPM에 배포
59
- npm publish
60
- ```
61
-
62
- **버전 관리:**
63
-
64
- - `patch` (1.0.0 → 1.0.1): 버그 수정, 오타 수정
65
- - `minor` (1.0.0 → 1.1.0): 새 규칙 추가, 기능 개선
66
- - `major` (1.0.0 → 2.0.0): 호환성 깨지는 변경
67
-
68
- **Git 태그 설명:**
69
-
70
- - `npm version` 명령어는 자동으로 Git 태그를 생성합니다
71
- - `git push --follow-tags`: 일반 커밋과 태그를 함께 푸시 (추천)
72
- - 또는 `git push && git push --tags`: 커밋 푸시 후 모든 태그 푸시
73
-
74
- ## Integration
75
-
76
- ### Installation
77
-
78
- ```bash
79
- # 패키지 설치
80
- npm install --save-dev heymark
81
- ```
82
-
83
- ### 초기 설정 (규칙 소스 = 원격 GitHub 저장소)
84
-
85
- 규칙은 **원격 GitHub 저장소(Public/Private)** 에서 읽습니다.
86
- 최초 1회만 설정하면 됩니다.
87
-
88
- ```bash
89
- # 규칙 소스 설정 (.heymark/config.json 생성)
90
- npx heymark init <GitHub-저장소-URL>
91
- ```
92
-
93
- 예시:
94
-
95
- ```bash
96
- # HTTPS (Private이면 Git credential/토큰 설정 필요)
97
- npx heymark init https://github.com/org/my-rules.git
98
-
99
- # SSH (Private 저장소 권장)
100
- npx heymark init git@github.com:org/my-rules.git
101
-
102
- # 저장소 안에서 .md가 하위 폴더에 있을
103
- npx heymark init https://github.com/org/my-rules.git --dir rules --branch main
104
- ```
105
-
106
- 설정은 **`.heymark/config.json`**에, 캐시(클론된 저장소)는 `.heymark/cache/`에 생성됩니다.
107
-
108
- ```gitignore
109
- .heymark/
110
- ```
111
-
112
- 이후 `heymark` 실행 시 해당 저장소를 clone/pull 한 뒤 `.md` 파일들을 변환합니다.
113
-
114
- ### Usage with npx
115
-
116
- 설치 없이 바로 실행하거나, 설치 후 npx로 실행할 수 있습니다.
117
- 규칙은 **원격 GitHub 저장소**에서 가져오며, 해당 저장소 안의 마크다운 파일을 각 AI 도구 형식으로 변환해 현재 프로젝트에 생성합니다.
118
-
119
- ```bash
120
- # .heymark/config.json에 설정된 외부 규칙 저장소에서 가져와 모든 도구 형식으로 변환 (기존 생성 파일 삭제 후 새로 생성)
121
- npx heymark
122
-
123
- # 이번에만 다른 외부 저장소 사용 (.heymark/config.json 무시)
124
- npx heymark --source https://github.com/org/other-rules.git
125
-
126
- # 특정 도구만 변환
127
- npx heymark -t cursor,claude
128
-
129
- # 미리보기 (파일 생성 없이 변환 결과만 확인)
130
- npx heymark --preview
131
-
132
- # 이전에 생성된 도구별 파일 삭제
133
- npx heymark --clean
134
-
135
- # 도움말
136
- npx heymark --help
137
- ```
138
-
139
- **설치 없이 바로 사용:**
140
-
141
- ```bash
142
- # 설치 없이 최신 버전으로 실행
143
- npx heymark@latest
144
- ```
145
-
146
- **패키지 업데이트:**
147
-
148
- ```bash
149
- npm update heymark
150
- npx heymark
151
- ```
152
-
153
- **동작 방식:**
154
-
155
- - 기본적으로 기존 생성된 파일을 삭제한 후 새로 생성합니다
156
- - 이를 통해 이전 버전의 파일이 남지 않고 깔끔하게 동기화됩니다
157
-
158
- ## Getting Started
159
-
160
- 규칙을 작성하고 로컬에서 테스트하는 방법.
161
-
162
- ### Writing Rules
163
-
164
- 규칙 소스 디렉터리(외부 레포)에 마크다운 파일 작성. YAML frontmatter로 메타데이터 정의:
165
-
166
- ```markdown
167
- ---
168
- description: "AI assistant behavior guidelines"
169
- globs: "**/*.ts,**/*.tsx"
170
- alwaysApply: true
171
- ---
172
-
173
- # Rule Title
174
-
175
- Rule content...
176
- ```
177
-
178
- ### Local Testing
179
-
180
- ```bash
181
- # 규칙 소스 설정 (최초 1회, GitHub 저장소 URL)
182
- node scripts/sync.js init https://github.com/org/my-rules.git
183
-
184
- # 모든 도구 형식으로 변환
185
- node scripts/sync.js
186
-
187
- # 이번에만 다른 저장소 사용
188
- node scripts/sync.js --source https://github.com/org/other-rules.git
189
-
190
- # 특정 도구만 변환
191
- node scripts/sync.js -t cursor,claude
192
-
193
- # 미리보기 (파일 생성 없이 확인)
194
- node scripts/sync.js --preview
195
-
196
- # 생성된 파일 삭제
197
- node scripts/sync.js --clean
198
- ```
199
-
200
- ## Tool Support
201
-
202
- ### Supported Tools
203
-
204
- | Tool | Output Format | Key Features |
205
- | :------------- | :-------------------------- | :------------------------------ |
206
- | Cursor | `.cursor/rules/*.mdc` | YAML frontmatter, glob 매칭 |
207
- | Claude Code | `.claude/skills/*/SKILL.md` | 스킬 디렉토리 구조 |
208
- | GitHub Copilot | `.github/instructions/*.md` | applyTo 패턴 매칭 |
209
- | OpenAI Codex | `AGENTS.md` | 단일 파일 병합 (Agent Rules v1) |
210
-
211
- ### Adding New Tools
212
-
213
- 변환 모듈을 추가하면 자동 인식된다. 필수 export 인터페이스:
214
-
215
- ```javascript
216
- module.exports = {
217
- name: "Tool Name",
218
- output: "output/path/pattern",
219
- generate(rules, projectRoot) {
220
- /* ... */
221
- },
222
- clean(ruleNames, projectRoot) {
223
- /* ... */
224
- },
225
- };
226
- ```
1
+ # Heymark
2
+
3
+ Heymark is a tool that manages Skill documentation for AI coding tools in a single location and automatically converts it into each tool format.
4
+ A Markdown source written once can be reused across multiple agent tools.
5
+
6
+ 1. [Overview](#overview)
7
+ 2. [Features](#features)
8
+ 3. [Supported Agent Tools](#supported-agent-tools)
9
+ 4. [Tech Stack](#tech-stack)
10
+ 5. [Heymark Usage](#heymark-usage)
11
+ 6. [Heymark Development](#heymark-development)
12
+
13
+ ## Overview
14
+
15
+ Managing Skill files separately for each AI tool leads to fragmented documentation and higher maintenance costs.
16
+ Heymark follows the Single Source of Truth principle and converts one Markdown source into multiple tool formats.
17
+ A Skill written once can be used immediately in Cursor, Claude Code, GitHub Copilot, OpenAI Codex, and Antigravity.
18
+
19
+ ## Features
20
+
21
+ - Single source management: Manage Skills for multiple AI tools with one Markdown file
22
+ - Automatic format conversion: Convert into each tool's native format (YAML frontmatter, AGENTS.md, etc.)
23
+ - Selective conversion: Convert only the tools you need
24
+ - NPM package distribution: Run with `npx` without installation
25
+ - Plugin structure: Extend supported tools by adding conversion modules
26
+
27
+ ## Supported Agent Tools
28
+
29
+ | Tool | Output Format | Key Features |
30
+ | :------------- | :--------------------------------------- | :------------------------------------------------------- |
31
+ | Cursor | `.cursor/rules/*.mdc` | YAML frontmatter (`description`, `globs`, `alwaysApply`) |
32
+ | Claude Code | `.claude/skills/*/SKILL.md` | Skill directory structure + YAML frontmatter |
33
+ | GitHub Copilot | `.github/instructions/*.instructions.md` | Multi-pattern mapping via `applyTo` |
34
+ | OpenAI Codex | `.agents/skills/*/SKILL.md` | Skill directory structure + YAML frontmatter |
35
+ | Antigravity | `.agent/skills/*/SKILL.md` | Skill directory structure + YAML frontmatter |
36
+
37
+ ## Tech Stack
38
+
39
+ - Runtime: Node.js
40
+ - Language: JavaScript
41
+ - Core: File system API, YAML frontmatter parsing
42
+
43
+ ## Heymark Usage
44
+
45
+ ### 1. Prepare the Skill Markdown Archive Repository
46
+
47
+ Create Markdown files in a Skill source directory (external or personal GitHub repository) and define metadata with YAML frontmatter.
48
+
49
+ ```markdown
50
+ ---
51
+ description: "AI assistant behavior guidelines"
52
+ globs: "**/*.ts,**/*.tsx"
53
+ alwaysApply: true
54
+ ---
55
+
56
+ # Skill Title
57
+
58
+ Skill content...
59
+ ```
60
+
61
+ You can keep the repository structure simple, as shown below.
62
+
63
+ ```text
64
+ my-skills-repository/
65
+ ai-behavior.md
66
+ code-conventions.md
67
+ api-skills.md
68
+ ```
69
+
70
+ Skill sources are read from a remote GitHub repository (Public/Private).
71
+
72
+ ### 2. Initial Setup
73
+
74
+ For first-time use, configure the Skill source repository once.
75
+
76
+ ```bash
77
+ # Configure Skill source (.heymark/config.json will be created)
78
+ npx heymark init <GitHub-Repository-URL>
79
+ ```
80
+
81
+ ```bash
82
+ # HTTPS (for private repositories, Git credentials/token setup is required)
83
+ npx heymark init https://github.com/org/my-rules.git
84
+
85
+ # SSH (recommended for private repositories)
86
+ npx heymark init git@github.com:org/my-rules.git
87
+
88
+ # When .md files are in a subdirectory of the repository
89
+ npx heymark init https://github.com/org/my-rules.git --dir rules --branch main
90
+ ```
91
+
92
+ ### 3. Run
93
+
94
+ You can run it directly with `npx` without installation.
95
+ Skills are fetched from an external GitHub repository, and Markdown files in that repository are converted into each AI tool format and generated in the current project.
96
+
97
+ ```bash
98
+ # Fetch from the external Skill repository configured in .heymark/config.json and convert to all tool formats
99
+ # (delete previously generated files and recreate them)
100
+ npx heymark
101
+
102
+ # Use a different external repository for this run only (ignore .heymark/config.json)
103
+ npx heymark --source https://github.com/org/other-rules.git
104
+
105
+ # Convert only specific tools
106
+ npx heymark -t cursor,claude
107
+
108
+ # Preview (check conversion result without creating files)
109
+ npx heymark --preview
110
+
111
+ # Delete tool-specific files generated previously
112
+ npx heymark --clean
113
+
114
+ # CLI help
115
+ npx heymark --help
116
+ ```
117
+
118
+ ## Heymark Development
119
+
120
+ ### 1. Local Execution
121
+
122
+ ```bash
123
+ # Configure Skill source (first-time only, GitHub repository URL)
124
+ node scripts/sync.js init https://github.com/org/my-rules.git
125
+
126
+ # Convert to all tool formats
127
+ node scripts/sync.js
128
+
129
+ # Use a different repository for this run only
130
+ node scripts/sync.js --source https://github.com/org/other-rules.git
131
+
132
+ # Convert only specific tools
133
+ node scripts/sync.js -t cursor,claude
134
+
135
+ # Preview (check without creating files)
136
+ node scripts/sync.js --preview
137
+
138
+ # Delete generated files
139
+ node scripts/sync.js --clean
140
+ ```
141
+
142
+ ### 2. Release
143
+
144
+ ```bash
145
+ # NPM login
146
+ npm login
147
+ # Username: your-npm-username
148
+ # Email: your-email@example.com
149
+
150
+ # 1. Test after updating Skills
151
+ node scripts/sync.js --preview
152
+
153
+ # 2. Update version (Git tag is created automatically)
154
+ npm version patch # or minor, major
155
+
156
+ # 3. Push to GitHub
157
+ git push --follow-tags # push commits and tags together
158
+
159
+ # 4. Publish to NPM
160
+ npm publish
161
+ ```
162
+
163
+ ### 3. Versioning
164
+
165
+ - `patch` (1.0.0 -> 1.0.1): Bug fixes, typo fixes
166
+ - `minor` (1.0.0 -> 1.1.0): New Skills, feature improvements
167
+ - `major` (1.0.0 -> 2.0.0): Breaking changes
168
+ - The `npm version` command automatically creates a Git tag.
169
+ - `git push --follow-tags` pushes normal commits and tags together. (Recommended)
170
+ - Alternatively, you can run `git push && git push --tags` to push commits first and then push all tags separately.