codingbuddy 2.4.2 → 3.0.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.
Files changed (36) hide show
  1. package/dist/src/agent/agent.types.js +23 -0
  2. package/dist/src/agent/agent.types.js.map +1 -1
  3. package/dist/src/cli/init/gitignore.utils.d.ts +17 -0
  4. package/dist/src/cli/init/gitignore.utils.js +80 -0
  5. package/dist/src/cli/init/gitignore.utils.js.map +1 -0
  6. package/dist/src/cli/init/index.d.ts +3 -0
  7. package/dist/src/cli/init/index.js +7 -1
  8. package/dist/src/cli/init/index.js.map +1 -1
  9. package/dist/src/cli/init/init.command.js +10 -0
  10. package/dist/src/cli/init/init.command.js.map +1 -1
  11. package/dist/src/cli/init/init.constants.d.ts +2 -0
  12. package/dist/src/cli/init/init.constants.js +11 -0
  13. package/dist/src/cli/init/init.constants.js.map +1 -0
  14. package/dist/src/diagnostic/diagnostic-log.service.d.ts +19 -0
  15. package/dist/src/diagnostic/diagnostic-log.service.js +146 -0
  16. package/dist/src/diagnostic/diagnostic-log.service.js.map +1 -0
  17. package/dist/src/diagnostic/diagnostic.module.d.ts +2 -0
  18. package/dist/src/diagnostic/diagnostic.module.js +23 -0
  19. package/dist/src/diagnostic/diagnostic.module.js.map +1 -0
  20. package/dist/src/diagnostic/diagnostic.types.d.ts +21 -0
  21. package/dist/src/diagnostic/diagnostic.types.js +8 -0
  22. package/dist/src/diagnostic/diagnostic.types.js.map +1 -0
  23. package/dist/src/diagnostic/index.d.ts +3 -0
  24. package/dist/src/diagnostic/index.js +20 -0
  25. package/dist/src/diagnostic/index.js.map +1 -0
  26. package/dist/src/keyword/keyword.service.js +19 -0
  27. package/dist/src/keyword/keyword.service.js.map +1 -1
  28. package/dist/src/mcp/handlers/mode.handler.d.ts +3 -1
  29. package/dist/src/mcp/handlers/mode.handler.js +18 -4
  30. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  31. package/dist/src/mcp/mcp.module.js +2 -0
  32. package/dist/src/mcp/mcp.module.js.map +1 -1
  33. package/dist/src/skill/i18n/keywords.js +658 -0
  34. package/dist/src/skill/i18n/keywords.js.map +1 -1
  35. package/dist/tsconfig.build.tsbuildinfo +1 -1
  36. package/package.json +3 -3
@@ -52,6 +52,367 @@ exports.SKILL_KEYWORDS = [
52
52
  },
53
53
  },
54
54
  },
55
+ {
56
+ skillName: 'incident-response',
57
+ priority: 24,
58
+ description: 'Systematic incident response for production issues',
59
+ concepts: {
60
+ incident: {
61
+ en: [
62
+ 'incident',
63
+ 'outage',
64
+ 'downtime',
65
+ 'service disruption',
66
+ 'production issue',
67
+ 'system down',
68
+ 'service down',
69
+ ],
70
+ ko: [
71
+ '인시던트',
72
+ '장애',
73
+ '다운타임',
74
+ '서비스 중단',
75
+ '운영 이슈',
76
+ '시스템 장애',
77
+ ],
78
+ ja: [
79
+ 'インシデント',
80
+ '障害',
81
+ 'ダウンタイム',
82
+ 'サービス中断',
83
+ '本番障害',
84
+ ],
85
+ zh: ['事故', '故障', '停机', '服务中断', '生产问题', '系统故障'],
86
+ es: ['incidente', 'interrupción', 'caída', 'problema de producción'],
87
+ },
88
+ severity: {
89
+ en: [
90
+ 'P1',
91
+ 'P2',
92
+ 'P3',
93
+ 'P4',
94
+ 'SEV1',
95
+ 'SEV2',
96
+ 'critical incident',
97
+ 'major incident',
98
+ 'severity',
99
+ ],
100
+ ko: ['P1', 'P2', 'P3', 'P4', '심각도', '중요도', '긴급 장애'],
101
+ ja: ['P1', 'P2', 'P3', 'P4', '深刻度', '緊急度', '重大障害'],
102
+ zh: ['P1', 'P2', 'P3', 'P4', '严重性', '紧急程度', '重大事故'],
103
+ es: ['P1', 'P2', 'P3', 'P4', 'severidad', 'incidente crítico'],
104
+ },
105
+ response: {
106
+ en: [
107
+ 'incident response',
108
+ 'on-call',
109
+ 'oncall',
110
+ 'on-call rotation',
111
+ 'war room',
112
+ 'bridge call',
113
+ 'triage',
114
+ 'incident commander',
115
+ 'PagerDuty',
116
+ 'OpsGenie',
117
+ 'alerting',
118
+ 'pager',
119
+ 'alert fatigue',
120
+ ],
121
+ ko: [
122
+ '인시던트 대응',
123
+ '온콜',
124
+ '온콜 로테이션',
125
+ '워룸',
126
+ '트리아지',
127
+ '장애 대응',
128
+ '페이저듀티',
129
+ '옵스지니',
130
+ '알림',
131
+ ],
132
+ ja: [
133
+ 'インシデント対応',
134
+ 'オンコール',
135
+ 'オンコールローテーション',
136
+ 'ウォールーム',
137
+ 'トリアージ',
138
+ 'PagerDuty',
139
+ 'OpsGenie',
140
+ 'アラート',
141
+ ],
142
+ zh: [
143
+ '事故响应',
144
+ '值班',
145
+ '值班轮换',
146
+ '作战室',
147
+ '分诊',
148
+ '事故指挥',
149
+ 'PagerDuty',
150
+ 'OpsGenie',
151
+ '告警',
152
+ ],
153
+ es: [
154
+ 'respuesta a incidentes',
155
+ 'guardia',
156
+ 'rotación de guardia',
157
+ 'sala de guerra',
158
+ 'triaje',
159
+ 'PagerDuty',
160
+ 'OpsGenie',
161
+ 'alertas',
162
+ ],
163
+ },
164
+ recovery: {
165
+ en: [
166
+ 'rollback',
167
+ 'failover',
168
+ 'disaster recovery',
169
+ 'business continuity',
170
+ 'mitigation',
171
+ 'containment',
172
+ ],
173
+ ko: [
174
+ '롤백',
175
+ '페일오버',
176
+ '재해 복구',
177
+ '비즈니스 연속성',
178
+ '완화',
179
+ '격리',
180
+ ],
181
+ ja: [
182
+ 'ロールバック',
183
+ 'フェイルオーバー',
184
+ '災害復旧',
185
+ '事業継続',
186
+ '軽減',
187
+ ],
188
+ zh: ['回滚', '故障转移', '灾难恢复', '业务连续性', '缓解', '隔离'],
189
+ es: [
190
+ 'rollback',
191
+ 'failover',
192
+ 'recuperación',
193
+ 'continuidad',
194
+ 'mitigación',
195
+ ],
196
+ },
197
+ postmortem: {
198
+ en: [
199
+ 'postmortem',
200
+ 'post-mortem',
201
+ 'RCA',
202
+ 'root cause analysis',
203
+ 'incident review',
204
+ 'blameless',
205
+ 'retrospective',
206
+ ],
207
+ ko: [
208
+ '포스트모템',
209
+ '사후 분석',
210
+ 'RCA',
211
+ '근본 원인 분석',
212
+ '장애 리뷰',
213
+ '비난 없는',
214
+ ],
215
+ ja: [
216
+ 'ポストモーテム',
217
+ '事後分析',
218
+ 'RCA',
219
+ '根本原因分析',
220
+ '障害レビュー',
221
+ ],
222
+ zh: ['事后分析', 'RCA', '根因分析', '事故复盘', '无责分析'],
223
+ es: [
224
+ 'postmortem',
225
+ 'RCA',
226
+ 'análisis de causa raíz',
227
+ 'revisión',
228
+ 'sin culpa',
229
+ ],
230
+ },
231
+ },
232
+ },
233
+ {
234
+ skillName: 'performance-optimization',
235
+ priority: 23,
236
+ description: 'Systematic performance optimization with profiling-first workflow',
237
+ concepts: {
238
+ performance: {
239
+ en: [
240
+ 'slow',
241
+ 'performance',
242
+ 'optimize',
243
+ 'speed up',
244
+ 'faster',
245
+ 'latency',
246
+ 'throughput',
247
+ ],
248
+ ko: ['느려', '성능', '최적화', '빠르게', '지연', '처리량'],
249
+ ja: ['遅い', 'パフォーマンス', '最適化', '高速化', 'レイテンシ'],
250
+ zh: ['慢', '性能', '优化', '加速', '延迟', '吞吐量'],
251
+ es: ['lento', 'rendimiento', 'optimizar', 'acelerar', 'latencia'],
252
+ },
253
+ profiling: {
254
+ en: [
255
+ 'profile',
256
+ 'profiler',
257
+ 'profiling',
258
+ 'benchmark',
259
+ 'measure',
260
+ 'bottleneck',
261
+ 'hot path',
262
+ ],
263
+ ko: ['프로파일', '프로파일링', '벤치마크', '측정', '병목', '핫패스'],
264
+ ja: ['プロファイル', 'ベンチマーク', '測定', 'ボトルネック'],
265
+ zh: ['分析', '基准测试', '测量', '瓶颈', '热点路径'],
266
+ es: ['perfilar', 'benchmark', 'medir', 'cuello de botella'],
267
+ },
268
+ metrics: {
269
+ en: [
270
+ 'p95',
271
+ 'p99',
272
+ 'response time',
273
+ 'load time',
274
+ 'render time',
275
+ 'memory usage',
276
+ ],
277
+ ko: ['응답 시간', '로드 시간', '렌더 시간', '메모리 사용량'],
278
+ ja: ['応答時間', 'ロード時間', 'レンダリング時間', 'メモリ使用量'],
279
+ zh: ['响应时间', '加载时间', '渲染时间', '内存使用'],
280
+ es: ['tiempo de respuesta', 'tiempo de carga', 'uso de memoria'],
281
+ },
282
+ regression: {
283
+ en: [
284
+ 'performance regression',
285
+ 'performance budget',
286
+ 'performance test',
287
+ 'perf test',
288
+ ],
289
+ ko: ['성능 회귀', '성능 예산', '성능 테스트'],
290
+ ja: [
291
+ 'パフォーマンス回帰',
292
+ 'パフォーマンスバジェット',
293
+ 'パフォーマンステスト',
294
+ ],
295
+ zh: ['性能回归', '性能预算', '性能测试'],
296
+ es: ['regresión de rendimiento', 'presupuesto de rendimiento'],
297
+ },
298
+ },
299
+ },
300
+ {
301
+ skillName: 'database-migration',
302
+ priority: 22,
303
+ description: 'Systematic database migration with zero-downtime patterns',
304
+ concepts: {
305
+ migration: {
306
+ en: [
307
+ 'migration',
308
+ 'migrate',
309
+ 'schema change',
310
+ 'database migration',
311
+ 'data migration',
312
+ 'table migration',
313
+ ],
314
+ ko: [
315
+ '마이그레이션',
316
+ '스키마 변경',
317
+ '데이터 마이그레이션',
318
+ 'DB 마이그레이션',
319
+ '테이블 이전',
320
+ ],
321
+ ja: ['マイグレーション', 'スキーマ変更', 'データ移行', 'テーブル移行'],
322
+ zh: ['迁移', '数据库迁移', '模式变更', '数据迁移', '表迁移'],
323
+ es: ['migración', 'migrar', 'cambio de esquema', 'migración de datos'],
324
+ },
325
+ schema: {
326
+ en: [
327
+ 'alter table',
328
+ 'add column',
329
+ 'drop column',
330
+ 'modify column',
331
+ 'rename column',
332
+ 'change type',
333
+ 'DDL',
334
+ ],
335
+ ko: [
336
+ '컬럼 추가',
337
+ '컬럼 삭제',
338
+ '컬럼 수정',
339
+ '컬럼 이름 변경',
340
+ '타입 변경',
341
+ ],
342
+ ja: ['カラム追加', 'カラム削除', 'カラム変更', 'タイプ変更'],
343
+ zh: ['添加列', '删除列', '修改列', '重命名列', '类型变更'],
344
+ es: ['agregar columna', 'eliminar columna', 'modificar columna'],
345
+ },
346
+ zero_downtime: {
347
+ en: [
348
+ 'zero downtime',
349
+ 'online migration',
350
+ 'expand contract',
351
+ 'rolling migration',
352
+ 'blue green database',
353
+ 'shadow table',
354
+ ],
355
+ ko: [
356
+ '무중단',
357
+ '온라인 마이그레이션',
358
+ '확장 수축 패턴',
359
+ '롤링 마이그레이션',
360
+ ],
361
+ ja: ['ゼロダウンタイム', 'オンライン移行', '拡張収縮パターン'],
362
+ zh: ['零停机', '在线迁移', '扩展收缩模式', '滚动迁移'],
363
+ es: ['cero tiempo de inactividad', 'migración en línea'],
364
+ },
365
+ large_scale: {
366
+ en: [
367
+ 'large table',
368
+ 'millions of rows',
369
+ 'batch migration',
370
+ 'bulk update',
371
+ 'backfill',
372
+ ],
373
+ ko: [
374
+ '대용량 테이블',
375
+ '수백만 행',
376
+ '배치 마이그레이션',
377
+ '대량 업데이트',
378
+ ],
379
+ ja: ['大規模テーブル', '数百万行', 'バッチ移行', '一括更新'],
380
+ zh: ['大表', '百万行', '批量迁移', '批量更新', '回填'],
381
+ es: ['tabla grande', 'millones de filas', 'migración por lotes'],
382
+ },
383
+ rollback: {
384
+ en: [
385
+ 'rollback migration',
386
+ 'revert migration',
387
+ 'undo migration',
388
+ 'migration rollback',
389
+ 'down migration',
390
+ ],
391
+ ko: ['롤백', '마이그레이션 롤백', '되돌리기', '마이그레이션 취소'],
392
+ ja: ['ロールバック', '移行ロールバック', '元に戻す'],
393
+ zh: ['回滚', '迁移回滚', '撤销迁移', '还原'],
394
+ es: ['rollback', 'revertir migración', 'deshacer migración'],
395
+ },
396
+ validation: {
397
+ en: [
398
+ 'data validation',
399
+ 'integrity check',
400
+ 'pre migration',
401
+ 'post migration',
402
+ 'verify migration',
403
+ ],
404
+ ko: [
405
+ '데이터 검증',
406
+ '무결성 검사',
407
+ '마이그레이션 전 검증',
408
+ '마이그레이션 후 검증',
409
+ ],
410
+ ja: ['データ検証', '整合性チェック', '移行前検証', '移行後検証'],
411
+ zh: ['数据验证', '完整性检查', '迁移前验证', '迁移后验证'],
412
+ es: ['validación de datos', 'verificación de integridad'],
413
+ },
414
+ },
415
+ },
55
416
  {
56
417
  skillName: 'executing-plans',
57
418
  priority: 22,
@@ -102,6 +463,126 @@ exports.SKILL_KEYWORDS = [
102
463
  },
103
464
  },
104
465
  },
466
+ {
467
+ skillName: 'pr-review',
468
+ priority: 22,
469
+ description: 'Systematic PR review with anti-sycophancy principles',
470
+ concepts: {
471
+ review: {
472
+ en: [
473
+ 'PR review',
474
+ 'pull request review',
475
+ 'review pull request',
476
+ 'code review',
477
+ 'review PR',
478
+ 'review MR',
479
+ 'merge request',
480
+ 'review this PR',
481
+ ],
482
+ ko: ['PR 리뷰', '풀리퀘스트 리뷰', '코드 리뷰', 'MR 리뷰', '검토해'],
483
+ ja: ['PRレビュー', 'プルリクエストレビュー', 'コードレビュー'],
484
+ zh: ['PR审查', '代码审查', '合并请求审查'],
485
+ es: ['revisar PR', 'revisión de código', 'revisar pull request'],
486
+ },
487
+ approve: {
488
+ en: [
489
+ 'approve PR',
490
+ 'approve merge',
491
+ 'LGTM',
492
+ 'sign off on PR',
493
+ 'merge approval',
494
+ ],
495
+ ko: ['PR 승인', 'MR 승인', 'LGTM'],
496
+ ja: ['PR承認', 'LGTM', 'マージ承認'],
497
+ zh: ['批准PR', 'LGTM', '同意合并'],
498
+ es: ['aprobar PR', 'aprobar merge', 'LGTM'],
499
+ },
500
+ critique: {
501
+ en: ['request changes', 'find issues', 'critique', 'feedback on PR'],
502
+ ko: ['수정 요청', '이슈 찾기', '피드백'],
503
+ ja: ['修正要求', '問題を見つける', 'フィードバック'],
504
+ zh: ['请求修改', '找问题', '反馈'],
505
+ es: ['solicitar cambios', 'encontrar problemas', 'crítica'],
506
+ },
507
+ checklist: {
508
+ en: ['security check', 'code quality check', 'review checklist'],
509
+ ko: ['보안 점검', '코드 품질 체크', '리뷰 체크리스트'],
510
+ ja: [
511
+ 'セキュリティチェック',
512
+ 'コード品質チェック',
513
+ 'レビューチェックリスト',
514
+ ],
515
+ zh: ['安全检查', '代码质量检查', '审查清单'],
516
+ es: [
517
+ 'verificación de seguridad',
518
+ 'verificación de calidad',
519
+ 'lista de verificación',
520
+ ],
521
+ },
522
+ efficiency: {
523
+ en: [
524
+ 'review efficiency',
525
+ 'time-boxing',
526
+ 'review turnaround',
527
+ 'PR too long',
528
+ ],
529
+ ko: ['리뷰 효율', '타임박싱', '리뷰 속도'],
530
+ ja: ['レビュー効率', 'タイムボックス', 'レビュー速度', 'PRが長すぎる'],
531
+ zh: [
532
+ '审查效率',
533
+ '时间控制',
534
+ '审查速度',
535
+ 'PR太长',
536
+ '審查效率',
537
+ '時間控制',
538
+ ],
539
+ es: [
540
+ 'eficiencia de revisión',
541
+ 'tiempo de revisión',
542
+ 'PR demasiado largo',
543
+ ],
544
+ },
545
+ feedback: {
546
+ en: [
547
+ 'constructive feedback',
548
+ 'review feedback',
549
+ 'mentoring through reviews',
550
+ ],
551
+ ko: ['건설적 피드백', '리뷰 피드백', '멘토링'],
552
+ ja: [
553
+ '建設的フィードバック',
554
+ 'メンタリング',
555
+ 'レビューフィードバック',
556
+ 'メンター',
557
+ ],
558
+ zh: ['建设性反馈', '指导', '反馈技巧', '建設性反饋', '指導'],
559
+ es: [
560
+ 'feedback constructivo',
561
+ 'mentoría en revisiones',
562
+ 'retroalimentación de revisión',
563
+ ],
564
+ },
565
+ metrics: {
566
+ en: ['review metrics', 'review tracking', 'escapees', 'review cycles'],
567
+ ko: ['리뷰 지표', '리뷰 추적', '리뷰 사이클'],
568
+ ja: ['レビュー指標', 'レビュー追跡', 'レビューサイクル'],
569
+ zh: [
570
+ '审查指标',
571
+ '审查跟踪',
572
+ '审查周期',
573
+ '审查工具',
574
+ '審查指標',
575
+ '審查追蹤',
576
+ '審查週期',
577
+ ],
578
+ es: [
579
+ 'métricas de revisión',
580
+ 'seguimiento de revisiones',
581
+ 'ciclos de revisión',
582
+ ],
583
+ },
584
+ },
585
+ },
105
586
  {
106
587
  skillName: 'writing-plans',
107
588
  priority: 20,
@@ -229,6 +710,183 @@ exports.SKILL_KEYWORDS = [
229
710
  },
230
711
  },
231
712
  },
713
+ {
714
+ skillName: 'refactoring',
715
+ priority: 21,
716
+ description: 'Structured, test-driven refactoring workflow with Tidy First principles',
717
+ concepts: {
718
+ refactor_action: {
719
+ en: [
720
+ 'refactor',
721
+ 'refactoring',
722
+ 'restructure',
723
+ 'reorganize code',
724
+ 'improve code structure',
725
+ 'clean up code',
726
+ 'tidy code',
727
+ 'tidy up',
728
+ 'execute refactor',
729
+ 'apply refactoring',
730
+ 'do refactoring',
731
+ 'perform refactoring',
732
+ ],
733
+ ko: [
734
+ '리팩토링',
735
+ '리팩터링',
736
+ '코드 정리',
737
+ '코드 개선',
738
+ '구조 개선',
739
+ '정리해줘',
740
+ '깔끔하게',
741
+ '리팩토링 실행',
742
+ '리팩토링 적용',
743
+ ],
744
+ ja: [
745
+ 'リファクタリング',
746
+ 'コード整理',
747
+ 'コード改善',
748
+ '構造改善',
749
+ '整理して',
750
+ 'リファクタリング実行',
751
+ 'リファクタリング適用',
752
+ ],
753
+ zh: [
754
+ '重构',
755
+ '代码重构',
756
+ '代码整理',
757
+ '结构优化',
758
+ '代码改进',
759
+ '整理代码',
760
+ '执行重构',
761
+ '应用重构',
762
+ ],
763
+ es: [
764
+ 'refactorizar',
765
+ 'refactoring',
766
+ 'reorganizar código',
767
+ 'limpiar código',
768
+ 'mejorar estructura',
769
+ 'ejecutar refactorización',
770
+ 'aplicar refactorización',
771
+ ],
772
+ },
773
+ code_smell: {
774
+ en: [
775
+ 'code smell',
776
+ 'long method',
777
+ 'long function',
778
+ 'duplicate code',
779
+ 'duplicated code',
780
+ 'large class',
781
+ 'feature envy',
782
+ 'primitive obsession',
783
+ 'god class',
784
+ 'spaghetti code',
785
+ ],
786
+ ko: [
787
+ '코드 스멜',
788
+ '긴 메서드',
789
+ '긴 함수',
790
+ '중복 코드',
791
+ '큰 클래스',
792
+ '스파게티 코드',
793
+ ],
794
+ ja: [
795
+ 'コードスメル',
796
+ '長いメソッド',
797
+ '長い関数',
798
+ '重複コード',
799
+ '大きいクラス',
800
+ 'スパゲッティコード',
801
+ ],
802
+ zh: [
803
+ '代码异味',
804
+ '长方法',
805
+ '长函数',
806
+ '重复代码',
807
+ '大类',
808
+ '上帝类',
809
+ '意大利面代码',
810
+ ],
811
+ es: [
812
+ 'code smell',
813
+ 'método largo',
814
+ 'función larga',
815
+ 'código duplicado',
816
+ 'clase grande',
817
+ 'código espagueti',
818
+ ],
819
+ },
820
+ extract: {
821
+ en: [
822
+ 'extract method',
823
+ 'extract function',
824
+ 'extract class',
825
+ 'extract component',
826
+ 'extract hook',
827
+ 'pull out',
828
+ 'separate',
829
+ ],
830
+ ko: [
831
+ '메서드 추출',
832
+ '함수 추출',
833
+ '클래스 추출',
834
+ '컴포넌트 추출',
835
+ '훅 추출',
836
+ '분리해',
837
+ ],
838
+ ja: [
839
+ 'メソッド抽出',
840
+ '関数抽出',
841
+ 'クラス抽出',
842
+ 'コンポーネント抽出',
843
+ '分離',
844
+ ],
845
+ zh: ['提取方法', '提取函数', '提取类', '提取组件', '分离'],
846
+ es: [
847
+ 'extraer método',
848
+ 'extraer función',
849
+ 'extraer clase',
850
+ 'extraer componente',
851
+ 'separar',
852
+ ],
853
+ },
854
+ technical_debt: {
855
+ en: [
856
+ 'technical debt',
857
+ 'tech debt',
858
+ 'legacy code',
859
+ 'maintainability',
860
+ 'code quality',
861
+ 'cleanup',
862
+ 'clean up',
863
+ ],
864
+ ko: [
865
+ '기술 부채',
866
+ '기술부채',
867
+ '레거시 코드',
868
+ '유지보수성',
869
+ '코드 품질',
870
+ '정리',
871
+ ],
872
+ ja: [
873
+ '技術的負債',
874
+ 'レガシーコード',
875
+ '保守性',
876
+ 'コード品質',
877
+ 'クリーンアップ',
878
+ ],
879
+ zh: ['技术债务', '技术债', '遗留代码', '可维护性', '代码质量', '清理'],
880
+ es: [
881
+ 'deuda técnica',
882
+ 'código legacy',
883
+ 'mantenibilidad',
884
+ 'calidad de código',
885
+ 'limpieza',
886
+ ],
887
+ },
888
+ },
889
+ },
232
890
  {
233
891
  skillName: 'test-driven-development',
234
892
  priority: 15,